axios-api-profiler
Version:
Axios interceptor that profiles HTTP responses
132 lines (77 loc) • 4.48 kB
Markdown
# Axios API Profiler
Axios interceptor that profiles HTTP responses for timings
[](https://travis-ci.org/anubhavsrivastava/axios-api-profiler)
[](https://coveralls.io/github/anubhavsrivastava/axios-api-profiler?branch=master)
[](http://makeapullrequest.com)
[](https://github.com/anubhavsrivastava/axios-api-profiler/issues)
[](http://hits.dwyl.io/anubhavsrivastava/axios-api-profiler)
[](https://nodei.co/npm/axios-api-profiler/)
<!-- toc -->
<!-- tocstop -->
---
## 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

#### Browser

### 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"]);

`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.
<!-- Change contributing.md -->
---
## License
[](LICENSE)
refer `LICENSE` file in this repository.
---