1#Interface: DispatchInterceptor 2 3Extends: `Function` 4 5A function that can be applied to the `Dispatcher.Dispatch` function before it is invoked with a dispatch request. 6 7This allows one to write logic to intercept both the outgoing request, and the incoming response. 8 9### Parameter: `Dispatcher.Dispatch` 10 11The base dispatch function you are decorating. 12 13### ReturnType: `Dispatcher.Dispatch` 14 15A dispatch function that has been altered to provide additional logic 16 17### Basic Example 18 19Here is an example of an interceptor being used to provide a JWT bearer token 20 21```js 22'use strict' 23 24const insertHeaderInterceptor = dispatch => { 25 return function InterceptedDispatch(opts, handler){ 26 opts.headers.push('Authorization', 'Bearer [Some token]') 27 return dispatch(opts, handler) 28 } 29} 30 31const client = new Client('https://localhost:3000', { 32 interceptors: { Client: [insertHeaderInterceptor] } 33}) 34 35``` 36 37### Basic Example 2 38 39Here is a contrived example of an interceptor stripping the headers from a response. 40 41```js 42'use strict' 43 44const clearHeadersInterceptor = dispatch => { 45 const { DecoratorHandler } = require('undici') 46 class ResultInterceptor extends DecoratorHandler { 47 onHeaders (statusCode, headers, resume) { 48 return super.onHeaders(statusCode, [], resume) 49 } 50 } 51 return function InterceptedDispatch(opts, handler){ 52 return dispatch(opts, new ResultInterceptor(handler)) 53 } 54} 55 56const client = new Client('https://localhost:3000', { 57 interceptors: { Client: [clearHeadersInterceptor] } 58}) 59 60``` 61