Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

293
Vistas
Obtener el código de estado 304 en una solicitud de obtención con axios usando reaccionar y redux

Tengo una solicitud de get en mi Redux Async Thunk . Después de llamar a get to my node.js express server, envía un código de estado 304 , por alguna razón no puedo obtener mis datos.

 const userTokenAxios = axios.create({ baseURL: '/api/shoes', headers: { Authorization: `Bearer ${localStorage.getItem('token')}`, }, }); userTokenAxios.interceptors.response.use((response) => { if (response.data.errorMessage === 'jwt expired') { localStorage.removeItem('token'); localStorage.removeItem('user'); } }); export const getShoesAsync = createAsyncThunk( 'shoes/getShoesAsync', async (payload, { rejectWithValue }) => { try { const response = await userTokenAxios.get('/'); console.log(response); return response.data; } catch (error) { return rejectWithValue(error.response.data); } } );

Está siendo llamado desde mi página de inicio:

 useEffect(() => { dispatch(getShoesAsync()); }, [dispatch]);

Pero no puedo obtener ningún dato ya que cada vez que se carga la página, el servidor envía un 304

mi controlador de fondo:

 exports.getAllShoes = async (req, res, next) => { try { let query = Shoe.find({}); const shoes = await query.populate([ { path: 'user', select: 'username', }, ]); return res.status(200).json(shoes); } catch (err) { return next(err); } };

app.js en mi carpeta de back-end:

 // ROUTES app.use('/auth', authRouter); app.use( '/api', expressJwt({ secret: process.env.JWT_SECRET, algorithms: ['HS256'] }) ); app.use('/api/shoes', shoeRouter);

package.json en mi carpeta de client

 "proxy": "http://localhost:9000"

Vista previa de mi red:

vista previa de la red

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El problema es tu interceptor. Los interceptores de respuesta deben devolver un valor, una promesa rechazada o arrojar un error; de lo contrario, la promesa resultante se resolverá con undefined .

También parece extraño que esté interceptando errores de token en el interceptor de respuesta exitoso. Habría asumido que usarías el interceptor de errores.

 userTokenAxios.interceptors.response.use( res => res, // success response interceptor err => { // usually you'd look for a 401 status ¯\_(ツ)_/¯ if (err.response?.data?.errorMessage === "jwt expired") { localStorage.removeItem('token'); localStorage.removeItem('user'); } return Promise.reject(err); } );

Si en realidad está respondiendo con un estado 200 para errores de token, deberá manejarlo en el interceptor de éxito

 userTokenAxios.interceptors.response.use( res => { if (res.data.errorMessage === "jwt expired") { localStorage.removeItem('token'); localStorage.removeItem('user'); // Make this look like an Axios error return Promise.reject({ message: "jwt expired", response: res, }); } return res; } );

También parece que no necesita la barra diagonal final en su solicitud, así que simplemente use

 const response = await userTokenAxios.get("");
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda