如何在承诺捕手中获得快递的json回应?

时间:2018-04-12 01:45:16

标签: node.js express promise axios

我有这个快速路由器。

app.get('/is-unique-email', function(req, res){

   // if email address is unique 
   if(unique){
       res.json({ unique: true })
       return
   } 

   // else return 403 with error message 
   res.status(403).json({
          email: 'Email already taken.'
   })
})

然后如何使用上面的json与axios?

    axios.get('/is-unique-email', { email })
        .then(result => {
            console.log(result)
        })
        .catch(err => {
            console.log(err)
        })

正常200响应没问题,我可以得到这样的响应数据:

{data: { unique: true }, status: 200, ... }

但403响应,我收到了这个回复:

Error: Request failed with status code 403
    at createError (createError.js:16)
    at settle (settle.js:18)
    at XMLHttpRequest.handleLoad (xhr.js:77)

我真正想要的是

{ status: 403, error : error, email: 'email already taken' }

如何使用JSON格式获得403响应?我是新手开发者,构建json api服务器。

1 个答案:

答案 0 :(得分:2)

响应数据存储在err.response

所以你会这样做:

axios.get('/is-unique-email', { email })
        .then(result => {
            console.log(result)
        })
        .catch(err => {
            console.log(err.response)
        })