Extends: Function
A function that can be applied to the Dispatcher.Dispatch function before it is invoked with a dispatch request.
This allows one to write logic to intercept both the outgoing request, and the incoming response.
Dispatcher.DispatchThe base dispatch function you are decorating.
Dispatcher.DispatchA dispatch function that has been altered to provide additional logic
Here is an example of an interceptor being used to provide a JWT bearer token
'use strict' const insertHeaderInterceptor = dispatch => { return function InterceptedDispatch(opts, handler){ opts.headers.push('Authorization', 'Bearer [Some token]') return dispatch(opts, handler) } } const client = new Client('https://localhost:3000', { interceptors: { Client: [insertHeaderInterceptor] } })
Here is a contrived example of an interceptor stripping the headers from a response.
'use strict' const clearHeadersInterceptor = dispatch => { const { DecoratorHandler } = require('undici') class ResultInterceptor extends DecoratorHandler { onHeaders (statusCode, headers, resume) { return super.onHeaders(statusCode, [], resume) } } return function InterceptedDispatch(opts, handler){ return dispatch(opts, new ResultInterceptor(handler)) } } const client = new Client('https://localhost:3000', { interceptors: { Client: [clearHeadersInterceptor] } })