Interceptores y middleware
Ciclo de vida (resumen)
- Fusionar defaults + config de la llamada.
- Interceptores de petición sobre la config.
- Crear
OpenFetchContext. - Pila de middleware; el núcleo llama a
dispatch(fetch+ parseo + validación + transformaciones de respuesta). - Interceptores de respuesta.
- Devolver respuesta completa o solo
datasiunwrapResponse.
Ver docs/PROJECT_FLOW.md en el paquete.
Interceptores
ts
client.interceptors.request.use(fulfilled?, rejected?);
client.interceptors.response.use(fulfilled?, rejected?);Orden:
- Petición: el último registrado se ejecuta primero (LIFO).
- Respuesta: el primero registrado primero (FIFO).
Middleware
ts
type Middleware = (
ctx: OpenFetchContext,
next: NextFn
) => Promise<void>;ctx.request— Config fusionada.ctx.response— Rellenadispatcho otro middleware.ctx.error— En fallo; el cliente relanza si no hayresponseal terminar.
ts
client.use(async (ctx, next) => {
await next();
});client.use hace push en defaults.middlewares.
Orden
El middleware exterior entra primero. Importa para caché vs reintento: caché antes que reintento evita reintentar aciertos de caché; reintento antes que caché reintenta el origen antes de la capa de caché.
Fábricas incluidas
createRetryMiddleware— Reintentos y caché.createCacheMiddleware— Reintentos y caché.
