Cela peut sembler stupide, mais j'essaie d'obtenir les données d'erreur lorsqu'une demande échoue dans Axios.
axios.get('foo.com')
.then((response) => {})
.catch((error) => {
console.log(error) //Logs a string: Error: Request failed with status code 404
})
Au lieu de la chaîne, est-il possible d'obtenir un objet avec peut-être le code d'état et le contenu? Par exemple:
Object = {status: 404, reason: 'Not found', body: '404 Not found'}
javascript
axios
Sebastian Olsen
la source
la source
response
propriété?console.log
utilise latoString
méthode pour formater lesError
objets. Cela n'a rien à voir avec la référence à laresponse
propriété.console.log
gère lesError
objets comme un cas particulier. Je ne peux pas dire comment il est mis en œuvre exactement dans les navigateurs, mais si vous appelezconsole.log({ foo: 'bar' });
etconsole.log(new Error('foo'));
dans la console Chrome DevTools, vous verrez que les résultats sont différents.Comme l'a dit @Nick, les résultats que vous voyez lorsque vous utilisez
console.log
unError
objet JavaScript dépendent de l'implémentation exacte deconsole.log
, qui varie et (imo) rend la vérification des erreurs incroyablement ennuyeuse.Si vous souhaitez voir l'
Error
objet complet et toutes les informations qu'il contient en contournant latoString()
méthode, vous pouvez simplement utiliser JSON.stringify :la source
J'utilise ces intercepteurs pour obtenir la réponse d'erreur.
la source
Avec TypeScript, il est facile de trouver ce que vous voulez avec le bon type.
la source
Vous pouvez utiliser l'opérateur de propagation (
...
) pour le forcer dans un nouvel objet comme ceci:Attention: ce ne sera pas une instance d'erreur.
la source
Ceci est un bug connu, essayez d'utiliser
"axios": "0.13.1"
https://github.com/mzabriskie/axios/issues/378
J'ai eu le même problème alors j'ai fini par utiliser
"axios": "0.12.0"
. Ça fonctionne bien pour moi.la source
error
Il y a une nouvelle option appelée
validateStatus
dans request config. Vous pouvez l'utiliser pour spécifier de ne pas lever d'exceptions si l'état <100 ou l'état> 300 (comportement par défaut). Exemple:la source
Vous pouvez mettre l'erreur dans un objet et enregistrer l'objet, comme ceci:
J'espère que cela aidera quelqu'un là-bas.
la source
Afin d'obtenir le code d'état http renvoyé par le serveur, vous pouvez ajouter des
validateStatus: status => true
options axios:De cette façon, chaque réponse http résout la promesse renvoyée par axios.
https://github.com/axios/axios#handling-errors
la source
C'est mon code: travaille pour moi
la source