Как получить ошибку с сервера, когда я делаю запрос? - PullRequest
0 голосов
/ 12 июня 2019

Я делаю запрос к серверу, и если я получаю ошибку, я хочу 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 голосов
/ 12 июня 2019

как указано в 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");
         }
    })

не стесняйтесь задавать дополнительные вопросы в комментариях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...