es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í?

Tags:  ,

Answer

  1. Avatar for 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.

Comments are closed.