Axios:如何访问被拒绝承诺的响应对象?

时间:2018-11-24 15:25:23

标签: javascript http axios

我已经使用NodeJS和Express构建了一些登录系统。我的错误处理基于发送适当的http状态代码,同时自定义错误消息。例如,错误的登录将返回以下内容:

res.status(401).send({ error: 'Incorrect login' })

如您所见,我既设置了一个状态,该状态将导致诺言失败(至少使用Axios),并发送我自己的错误。

在前端,这就是我所拥有的:

 try {
  var response =  await axios({
    method: 'post',
    url: 'http://localhost:3000/signin',
    data: {
      email: this.state.email,
      password: this.state.password
    },
    headers

  })
} catch (error) {
  console.log(response)
  return alert(error)
}

由于401导致诺言被拒绝,我留下了这个内置错误:请求失败,状态码为401。

还有什么方法可以访问响应对象吗?我的想法是处理来自服务器的所有错误消息,从而使这项工作远离前台。

1 个答案:

答案 0 :(得分:1)

使用error.response从服务器获取响应。要显示整个错误对象,请执行console.dir(error)

try {
  var { data } = await axios({
    method: 'post',
    url: 'http://localhost:3000/signin',
    data: {
      email: this.state.email,
      password: this.state.password
    },
    headers

  })
} catch (error) {
  console.dir(error) // error.response contains your response
}