An open API service indexing awesome lists of open source software.

https://github.com/anubhavsrivastava/axios-api-profiler

Axios interceptor that profiles HTTP responses for time taken(including middleware time)
https://github.com/anubhavsrivastava/axios-api-profiler

Last synced: 2 days ago
JSON representation

Axios interceptor that profiles HTTP responses for time taken(including middleware time)

Awesome Lists containing this project

README

          

# Axios API Profiler

Axios interceptor that profiles HTTP responses for timings

[![Build Status](https://travis-ci.org/anubhavsrivastava/axios-api-profiler.svg?branch=master)](https://travis-ci.org/anubhavsrivastava/axios-api-profiler)
[![Coverage Status](https://coveralls.io/repos/github/anubhavsrivastava/axios-api-profiler/badge.svg?branch=master)](https://coveralls.io/github/anubhavsrivastava/axios-api-profiler?branch=master)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![GitHub issues](https://img.shields.io/github/issues/anubhavsrivastava/axios-api-profiler.svg?style=flat-square)](https://github.com/anubhavsrivastava/axios-api-profiler/issues)
[![HitCount](http://hits.dwyl.io/anubhavsrivastava/axios-api-profiler.svg)](http://hits.dwyl.io/anubhavsrivastava/axios-api-profiler)

[![NPM](https://nodei.co/npm/axios-api-profiler.png?downloads=true&stars=true)](https://nodei.co/npm/axios-api-profiler/)

---

## Introduction

Axios API Profiler is interceptor for axios that profiles for time each axios based call takes including network time + axios handling time (including middleware time)

## Profiling info

API profiling is only for time. This includes time taken by axios to process the request and network time.

## Install

```
$ npm install axios-api-profiler --save
```

or

```
yarn add axios-api-profiler
```

## Usage

Import `axiosRequestProfiler` to register it as interceptor for axios that will profile all APIs.

### Simple usage

import axios from 'axios';
import axiosRequestProfiler from 'axios-api-profiler';

// ... middleware chain
axiosRequestProfiler(axios)

`axiosRequestProfiler` function also accepts instance of axios as its parameter.
By default, Profiling information is logged in the console. (browser or node)

#### Node

![On Node](./img/node.png)

#### Browser

![On Node](./img/browser.png)

### Fetching all profiling information

You can get all profiled information (of same instance) via `defaultApiProfilerInstance.getAPIProfileData()`

import axios from 'axios';
import axiosRequestProfiler, { defaultApiProfilerInstance } from 'axios-api-profiler';

// ... middleware chain
axiosRequestProfiler(axios);
// stop default console loggin
axios.defaults.ignoreApiProfilingLogs = true;

axios.get('/user);
//other axios call over a period of time

const profileInfomation = defaultApiProfilerInstance.getAPIProfileData();
console.table(profileInformation, ["startTime", "endTime"]);

![All records](./img/records.png)

`startTime` and `endTime` are instance of Date.

## Configuration

One can disable this interceptor by passing `ignoreApiProfiling` as configuration in axios instance or per axios api call. This configuration can also be set on `axios.default` object.

| Setting Name | type | description | default value |
| ---------------------- | --------- | ------------------------------------------------------- | ------------- |
| ignoreApiProfiling | `Boolean` | Flag to disable profiling | `false` |
| ignoreApiProfilingLogs | `Boolean` | Flag to disable `console` logging of API profile timing | `false` |

1. To disable profiling for specific call

axios.get('/users', { ignoreApiProfiling:true } ).then(response=>{
//response is standard axios response with config, header, status, data, statusText
})

This config as parameter is available for all calls(get, post, put, etc) in axios, refer [here](https://www.npmjs.com/package/axios#request-method-aliases).

2. To disable interceptor for all calls of a instance (if already configured as interceptor in axios default configuration)

const instance = axios.create({ignoreApiProfiling: true});

3. To continue profiling and not log timing on `console`, use `ignoreApiProfilingLogs` flag,

axios.get('/users', { ignoreApiProfilingLogs:true } ).then(response => {
//api timing wont be logged on console
})

---

## Contribution

Suggestions and PRs are welcome!

Please read the [contribution guidelines](CONTRIBUTING.md) to get started.

---

## License

[![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](LICENSE)

refer `LICENSE` file in this repository.

---