1.5 KiB
1.5 KiB
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
'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.
'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] }
})