web-dev-qa-db-fra.com

Axios. Comment obtenir une réponse d'erreur même lorsque l'api renvoie une erreur 404, dans try catch enfin

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.

https://jsfiddle.net/jacobgoh101/fdvnsg6u/1/

9
Jacob Goh

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);
  }
})();

Fiddle mis à jour

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
  }
})();
17
T.J. Crowder

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).

4
Oliver