0.22.0 • Published 3 years ago

zipkin-instrumentation-axiosjs v0.22.0

Weekly downloads
664
License
Apache-2.0
Repository
github
Last release
3 years ago

zipkin-instrumentation-axiosjs

Adds Zipkin tracing support for the axios JS HTTP client library. It supports all features of axios.

Installation

npm install zipkin-instrumentation-axiosjs --save

Usage

You need to use wrapAxios fucntion to wrap the native axios instance, and the axios instance's type/functions/attributes are not affected. As a result, you can use zipkinAxios the same as axios

For example:

  • Performing a GET request
const axios = require('axios');
const wrapAxios = require('zipkin-instrumentation-axiosjs');
const { Tracer, ExplicitContext, ConsoleRecorder } = require('zipkin');

const ctxImpl = new ExplicitContext();
const recorder = new ConsoleRecorder();
const localServiceName = 'service-a'; // name of this application
const tracer = new Tracer({ ctxImpl, recorder, localServiceName });

const remoteServiceName = 'weather-api';
const zipkinAxios = wrapAxios(axios, { tracer, serviceName: localServiceName, remoteServiceName });

zipkinAxios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
  • Wrap an axios instance
  let axiosInstance = axios.create({
    baseURL: 'https://some-domain.com/api/',
    timeout: 1000,
    headers: {'X-Custom-Header': 'foobar'}
});
  axiosInstance = wrapAxios(axiosInstance, {
    tracer,
    serviceName: localServiceName,
    remoteServiceName
  });

Interceptors of Axios also supported

You can intercept requests or responses before they are handled by then or catch.

// Add a request interceptor
axios.interceptors.request.use(function (config) {
    // Do something before request is sent
    return config;
  }, function (error) {
    // Do something with request error
    return Promise.reject(error);
  });
 
// Add a response interceptor
axios.interceptors.response.use(function (response) {
    // Do something with response data
    return response;
  }, function (error) {
    // Do something with response error
    return Promise.reject(error);
  });

The test cases all passed:

 axios instrumentation - integration test
    ✓ should add headers to requests
    ✓ should support request shorthand (defaults to GET)
    ✓ should support both url and uri options
    ✓ should support promise callback
    ✓ should report 404 when path does not exist
    ✓ should report when service does not exist (41ms)
    ✓ should report when service returns 400
    ✓ should report when service returns 500
0.22.1-alpha.6

3 years ago

0.22.1-alpha.3

3 years ago

0.22.0

4 years ago

0.21.0

4 years ago

0.20.0

4 years ago

0.19.2-alpha.6

4 years ago

0.19.2

4 years ago

0.19.2-alpha.3

4 years ago

0.19.2-alpha.1

5 years ago

0.19.1

5 years ago

0.20.0-alpha.1

5 years ago

0.20.0-alpha.0

5 years ago

0.19.0

5 years ago

0.18.6

5 years ago

0.18.5

5 years ago

0.18.4

5 years ago

0.18.4-alpha.7

5 years ago

0.19.0-alpha.4

5 years ago

0.18.3

5 years ago

0.18.2

5 years ago

0.17.0

5 years ago

0.16.2

5 years ago