发出请求时如何从服务器获取错误?

时间:2019-06-12 10:18:02

标签: javascript axios

我正在向服务器发出请求,如果遇到错误,我想进行console.log记录,但返回一个JavaScript错误。

我在网上找到了此解决方案,在此拦截中,我可以适当地返回错误,但似乎不起作用。

   Axios.interceptors.response.use(
    response => {
        return response;
    },
    function(error) {
        // Do something with response error
        if (error.response.status === 401) {
            console.log("unauthorized, logging out ...");
            store.commit("logout");
            router.push({ path: "/login" });
        }
        return Promise.reject(error.response);
    }
  );

这是我的要求:

  Axios.put("/api/auth/request/phone/verify", {
    phone: this.registeredPhone,
    code: this.stashedCode()
  })
    .then(response => {
      console.log(response);
      if (response.data.status == 200 && response.data.success) {
        swal("Success", response.data.data.message, "success");
      }
    })
    .catch(error => {
      // console.log(error);
      console.log(error.response);
    });

我期望像这样的东西

{
 "status": 422,
 "success": false,
 "data": {
 "erro": "validation.phone_field_required."
}

但是我最终得到:PUT http://localhost:3000/api/auth/request/phone/verify 422 (Unprocessable Entity)

1 个答案:

答案 0 :(得分:0)

Axios Documents中所述的

。您应该将有效的状态代码作为选项传递给axios。如果您不这样做,则状态代码 4XX 是错误,因此可以通过catch块进行处理。

axios.get('/user/12345', {
  validateStatus: function (status) {
    return status < 500; // Reject only if the status code is greater than or equal to 500
  }
})

所以您的请求将像这样更改:

axios({
      method: 'put',
      url: '/api/auth/request/phone/verify',
      data: {
        phone: this.registeredPhone,
        code: this.stashedCode()
      },
      validateStatus: (status) => {
        return status < 500;
      },
    }).catch(error => {

    }).then(response => {
        console.log(response);
        if (response.data.status == 200 && response.data.success) {
          swal("Success", response.data.data.message, "success");
         }
    })

随时可以在评论中提出更多问题