par exemple.
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error(err);
} finally {
console.log(apiRes);
}
})();
dans finally
, apiRes
renverra null.
Même lorsque l'API obtient une réponse 404, il y a toujours des informations utiles dans la réponse que j'aimerais utiliser.
Comment puis-je utiliser la réponse d'erreur dans finally
lorsque axios génère une erreur.
Selon la documentation , la réponse complète est disponible en tant que propriété response
sur l'erreur.
J'utiliserais donc ces informations dans le bloc catch
:
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
console.error("Error response:");
console.error(err.response.data); // ***
console.error(err.response.status); // ***
console.error(err.response.headers); // ***
} finally {
console.log(apiRes);
}
})();
Mais si vous le souhaitez dans finally
à la place, enregistrez-le simplement dans une variable que vous pouvez y utiliser:
(async() => {
let apiRes = null;
try {
apiRes = await axios.get('https://silex.edgeprop.my/api/v1/a');
} catch (err) {
apiRes = err.response;
} finally {
console.log(apiRes); // Could be success or error
}
})();
Selon la documentation d'AXIOS (ici: https://github.com/axios/axios ) vous pouvez passer validateStatus: false
Dans l'objet config à n'importe quelle requête axios.
par exemple.
axios.get(url, { validateStatus: false })
axios.post(url, postBody, { validateStatus: false })
Vous pouvez également transmettre une fonction comme celle-ci: validateStatus: (status) => status === 200
Selon les documents, le comportement par défaut est une fonction qui renvoie true if (200 <= status <300).