Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

291
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!