javascript - Axios post intră în blocul catch chiar și după finalizarea cu succes a apelului Rest API
Cererea mea POST axios nu returnează valoarea returnată de API într-un scenariu 401 de eșec. Funcționează bine atunci când este un scenariu de succes.
API-ul meu de resetare a parolei returnează codul de stare și un mesaj pentru fiecare apel. Când folosesc Postman pentru a testa rezultatul său pentru resetarea unei parole, oferind parola curentă incorectă, primesc
Rezultat Postman:
statusCode: 401,
headers: {
.......
........
},
body: "{"code":"NotAuthorizedException","name":"NotAuthorizedException","message":"Incorrect username or password."}" <--- This is the body outputDar în apelul meu axios post, ajunge în blocul catch:
await Axios.post(resetAPIUrl, resetParams, config).then(value=> {
console.log(`Returned data ----> ${JSON.stringify(value)}`);
resolve(value);
}).catch(error=>{
console.log(`Failing--->${error}`)
reject(error)
});aceasta este eroarea pe care o primesc în blocul catch al postării Axios:
Error: Request failed with status code 401Motivul erorii este corect. Dar de ce nu intră în blocul catch? Este o finalizare reușită a procesului. Apelarea API-ului direct din Postman îmi oferă structura corectă de ieșire.
Răspuns #1
Interceptorul a fost răspunsul. Deoarece Axios nu consideră nicio altă răspuns în afară de 200 ca scenariu de succes, interceptorii pot fi folosiți pentru a captura celelalte răspunsuri:
{
Axios.interceptors.request.use(req=>{
console.log(`This is the request ---> ${req.method} ${req.url}`)
return req;
})
Axios.interceptors.response.use(res => {
console.log(`res status ---> ${res.status}`)
resolve(res)
return res;
}, (error)=>{
console.log(`This is the error status ---> ${error.response.status}`)
if(error.response.status === 401){
resolve(error.response);
}
})
await Axios.post(resetAPIUrl, resetParams, config);Răspunsul #2
Dacă codul de răspuns arată 200, atunci în blocul tău .then ai o metodă sau o variabilă care nu este definită. Verifică asta!
