Comment attraper et manipuler l'erreur de réponse 422 avec Redux/Axios?
J'ai une action à faire un POST
demande au serveur afin de mettre à jour un utilisateur, mot de passe, mais je ne suis pas en mesure de gérer l'erreur dans l'enchaînement bloc catch.
return axios({
method: 'post',
data: {
password: currentPassword,
new_password: newPassword
},
url: `path/to/endpoint`
})
.then(response => {
dispatch(PasswordUpdateSuccess(response))
})
.catch(error => {
console.log('ERROR', error)
switch (error.type) {
case 'password_invalid':
dispatch(PasswordUpdateFailure('Incorrect current password'))
break
case 'invalid_attributes':
dispatch(PasswordUpdateFailure('Fields must not be blank'))
break
}
})
Lorsque je connecte l'erreur c'est ce que je vois:
Lorsque je vérifie l'onglet réseau, je peux voir le corps de la réponse, mais pour une raison que je ne peux pas accéder à les valeurs!
Ont sans le savoir, je fait une erreur quelque part? Parce que je suis la manipulation d'autres erreurs de différentes demande amende, mais ne semble pas possible de travailler ça.
Vous devez vous connecter pour publier un commentaire.
Axios est probablement l'analyse de la réponse. - Je accéder à l'erreur comme ceci dans mon code:
De la documentation:
La réponse à une demande contient les informations suivantes.
De sorte que le
catch(error => )
est en fait justecatch(response => )
EDIT:
Encore je ne comprends pas pourquoi l'enregistrement de l'erreur retourne la pile message. J'ai essayé de journalisation comme ça. Et puis vous pouvez voir que c'est un objet.
EDIT2:
Après quelques à regarder autour de cette est ce que vous essayez d'imprimer. Qui est un Javascipt objet d'erreur. Axios améliore ensuite cette erreur avec la config, code et reponse comme cette.
let e = {...error}
switch (e.response.data.type)
Exemple
Vérifier l'erreur de l'objet pour la réponse, il comprendra l'objet que vous recherchez sorte que vous pouvez faire
error.response.status
https://github.com/mzabriskie/axios#handling-errors
Ici est la bonne façon de gérer la
error
objet:De l'url d'origine https://gist.github.com/fgilio/230ccd514e9381fafa51608fcf137253
J'étais aussi perplexe sur ce pendant un certain temps. Je ne vais pas ressasser les choses trop, mais j'ai pensé qu'il serait utile d'en ajouter d'autres de mes 2 cents.
La
error
dans le code ci-dessus est de typeError
. Ce qui se passe est le toString méthode est appelée sur l'objet d'erreur que vous essayez d'imprimer quelque chose à la console. C'est implicite, à la suite de l'écriture de la console. Si vous regardez le code de toString sur l'objet d'erreur.De sorte que vous pouvez voir ci-dessus, il utilise les données internes pour construire la chaîne de sortie de la console.
Il y a de grandes docs sur ce sur mozilla.
Vous pouvez utiliser inline si d'autre énoncé comme suit: