Как я могу прочитать ошибки http, когда responseType является BLOB-объектом в Axios с VueJs? - PullRequest
1 голос
/ 24 мая 2019

Я использую blob responseType с Axios в своем приложении VueJS для загрузки документа с сервера. Когда код ответа равен 200, он работает нормально и загружает файл, но когда возникает какая-либо ошибка http, я не могу прочитать код состояния при обнаружении ошибки, поскольку ошибка является ответом JSON.

Кто-нибудь сталкивался с подобной проблемой и разработал способ преобразования типа ответа BLOB-объекта в JSON и выдал ошибку на основе кода состояния?

Я попытался отправить ответ в виде простого текста из бэкэнда Laravel и попытался преобразовать ответ в JSON или текст в интерфейсе, но безуспешно.

Я попытался прочитать заголовки ответа об ошибке, но не повезло.

Axios({
        url: 'xxxx',
        method: 'GET',
        responseType: 'blob', 
        })
    .then((response) => {
        //code to read the response and create object url with the blob and download the document
    })
    .catch((error) => {
      console.log('Error', error.message); //nothing
      console.log('Error', error.error); //undefined
      console.log('Error', error.data); //undefined

      const blb    = new Blob([error], {type: "text/plain"});
      const reader = new FileReader();

      // This fires after the blob has been read/loaded.
      reader.addEventListener('loadend', (e) => {
        const text = e.srcElement.result;
        console.log(text);
      });
     // Start reading the blob as text.
     reader.readAsText(blb);
});

Я просто хочу выбросить сообщение об ошибке на основе кода состояния. Если это 401, просто хотите, чтобы он был неавторизован, и что-нибудь еще добавьте в компонент.

1 Ответ

0 голосов
/ 24 мая 2019

В axios все, что вы получаете с response словом.То же самое относится и к вашей ошибке.Вы читаете это о документации.

Кстати, вот ваш ответ.для получения данных чуть ниже

console,log(error.response.data);

теперь с error.response вы можете получить все, что захотите, будь то код ошибки или что-то еще.

просто проверьте свою ошибкуструктуру, выполнив console.log

console.log(error.response);

получить все путем передачи ..

Я думаю, для кода состояния это => console.log(error.response.status)

надеюсь, это работает для вас.

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