Fetch
Officialv5.5.10@kubb/plugin-fetch
Add interceptors
Register handlers on client.interceptors.request, .response, or .error to apply behavior across calls. Handlers receive the resolved request and result objects.
Run before the send
Request handlers run after URL construction, serialization, and authentication. Return the modified request:
import { client } from './gen/.kubb/client'
client.interceptors.request.use((request) => {
request.headers['X-Request-ID'] = crypto.randomUUID()
return request
})The handler receives a ResolvedRequest (url, method, headers, body, signal,
credentials, options, responseType).
Run after the send
Response handlers run before calls resolve, and before the status split and deserialization, so
data is the raw body. The handler receives a TransportResult (data, status, statusText,
headers, contentType, request, response):
client.interceptors.response.use((result) => {
console.info(`${result.status} ${result.request.url}`)
return result
})React to an error
Use an error handler to react to HTTP errors on the throwing path. The handler receives the
ResponseError:
client.interceptors.error.use((error) => {
if (error.status === 401) scheduleTokenRefresh()
return error
})This channel only fires on the throw path. When you read with throwOnError: false, a documented
non-2xx response resolves and no error interceptor runs, so inspect the returned error on the
result instead. A transport failure (no response) still throws. The error handler does not run,
because there is no result to pass it.
Add, replace, and remove handlers
use registers a handler and returns an id. Pass that id to eject to remove it, or to update
to swap its function in place.
const id = client.interceptors.request.use((request) => request)
client.interceptors.request.update(id, (request) => {
request.headers['X-Trace'] = 'on'
return request
})
client.interceptors.request.eject(id)Where to set them
Register handlers on the shared client for all operations, or on a separate createClient instance for isolated calls. Interceptors are instance-level settings.
See also
Handle errors
Handle failures from the client Kubb generates. Catch a ResponseError, switch to a returned error result with throwOnError, and tell a network failure apart from a 4xx or 5xx response.
Configure serialization
The generated client encodes parameters using OpenAPI style and explode, serializes request bodies by content type, and decodes responses by media type. Each generated operation carries its parameter styles and content types, so most requests need no extra setup.