UNPKG

axios-api-profiler

Version:
132 lines (77 loc) 4.48 kB
# 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/) <!-- 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 ![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. <!-- Change contributing.md --> --- ## License [![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102)](LICENSE) refer `LICENSE` file in this repository. ---