| # Interface: DispatchInterceptor |
| |
| 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. |
| |
| ### Parameter: `Dispatcher.Dispatch` |
| |
| The base dispatch function you are decorating. |
| |
| ### ReturnType: `Dispatcher.Dispatch` |
| |
| A dispatch function that has been altered to provide additional logic |
| |
| ### Basic Example |
| |
| Here is an example of an interceptor being used to provide a JWT bearer token |
| |
| ```js |
| '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] } |
| }) |
| |
| ``` |
| |
| ### Basic Example 2 |
| |
| Here is a contrived example of an interceptor stripping the headers from a response. |
| |
| ```js |
| '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] } |
| }) |
| |
| ``` |