即使出现400错误请求错误,如何捕获服务器响应?

时间:2017-05-22 22:17:48

标签: javascript promise

考虑以下代码。它只是一个带axios库的简单http发布请求。

axios.post('http://localhost/users', this.state)
        .then(function(response) {
          if (response.status == 201) {
            browserHistory.push('/features');
          } 
        })
        .catch(function(error) {
          console.log(error);
        })

如果用户向输入输入了错误的数据,服务器的响应将保留信息,例如

  • 密码必须更长......
  • 邮件遗漏了@标志
  • 等...

很遗憾,如果状态为400 bad request,我就不知道如何进入该回复。它只显示错误,但我无法得到回复。

如果响应状态为201,则会正确显示响应。但是在400的情况下,即使我更改条件并添加else if (response.status == 400) { console.log(response) },它也不会显示响应。

任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:7)

只需查看axios文档,看起来应该在错误对象中公开响应(即console.log(error.response))。

有关响应代码超出2xx时提供的不同信息的详细信息:https://github.com/mzabriskie/axios#handling-errors

答案 1 :(得分:1)

您需要记录响应的数据:

axios.post('http://localhost/users', this.state)
        .then(function(response) {
          browserHistory.push('/features');
        })
        .catch(function(error) {
          console.log(error.response.data); // this is the part you need that catches 400 request
        });