Estou enviando uma solicitação de postagem para meu domínio local para outro. (Estou usando o Chrome no modo dev para contornar o problema do Cors)
Este é o meu código:
axios('https://..../signup', {
method: 'POST',
data: {
email: '[email protected]',
password: 'fdsfds',
confirmPassword: 'fdsfds'
}
}).then(function(response) {
console.log('response::', response.data);
})
.catch(function(error) {
console.log('ERROR::', error.data);
});
O problema é que eu só recebo o status 400 (Bad Request)
como resposta, enquanto que se eu fosse enviar a mesma solicitação via curl cli/postman eu obteria o status mais um corpo como:
[
{
"param": "email",
"msg": "Email is not valid"
},
{
"param": "password",
"msg": "Password must be at least 4 characters long"
},
{
"param": "confirmPassword",
"msg": "Passwords do not match"
}
]
Mas não com axios. Isso não pode ser um problema do Cors, porque eu posso fazer consultas get/post bem, eu simplesmente não consigo obter o corpo que é retornado com o status.
Não importa que console.log('ERROR::', error.response.data);
tenha feito o trabalho, espero que isso seja documentado claramente.
@samayo Obrigado por responder isso. Isso estava me deixando louco, usando a solicitação XHR simples funcionou bem até obter respostas de erro, mas ao usar axios, eu estava me perguntando por que não consegui obter as respostas de volta com erro, o que você respondeu perfeitamente. Concordo que deve ser mais fácil de encontrar na documentação.
Quando eu envio uma solicitação de postagem usando a sintaxe de espera assíncrona, se o status de res for 200, ele enviará de volta o corpo da resposta, mas quando o status da resposta for 400, ele não enviará o corpo da resposta. Como obter erro usando a sintaxe de espera assíncrona?
Comentários muito úteis
Não importa que
console.log('ERROR::', error.response.data);
tenha feito o trabalho, espero que isso seja documentado claramente.