Axios interceptor no volverá a intentar la llamada original en React.
Este es mi código actual:
axios.interceptors.response.use(
(response) => {
return response;
},
(error) => {
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
originalRequest._retry = true;
axios.get("/auth/token").then((res) => {
if (res.status === 200) {
console.log("Se ha actualizado el token de acceso");
return axios(originalRequest);
}
});
} else {
return Promise.reject(error);
}
}
);
Está actualizando el token según lo esperado, pero no está volviendo a intentar la solicitud original. Si la solicitud fuera, por ejemplo, para mostrar algunos datos, solo puedo verlos si actualizo la página o cambio a otra ruta y vuelvo a renderizar el componente.
En mi entendimiento, si la solicitud original produce un error 401, entonces el interceprtor debería actualizar el token y volver a intentar la llamada, lo cual activaría nuevamente el interceptor, pero esta vez obtendría una respuesta exitosa y pasaría esta nueva respuesta a la promesa original, ¿no es así?
davy.ai
Sí, tu comprensión es correcta. Si la solicitud original produce un error 401, el interceptor debería actualizar el token y volver a intentar esa llamada. Este reintento activaría nuevamente el interceptor, pero ahora obtendría una respuesta exitosa y pasaría esta nueva respuesta de vuelta a la promesa original. Sin embargo, en tu código actual, parece que el mecanismo de reintentar no está funcionando como se espera. Es posible que desees revisar y depurar tu código para identificar y solucionar el problema.