Я хотел бы централизовать ошибки HTTP-запроса, которые могут возникнуть, когда я вызываю любой метод http-запроса ($http.post
, $http.delete
и т.д.) С использованием vue-resource
.
Я знаю, что могу обрабатывать ошибки для любого отдельного запроса, например:
this.$http.post(restUrl, payload).then(onSuccess, onFailure);
Но, я думаю, если я могу определить и установить onFailure
обратного вызова onFailure
для любых HTTP-запросов. Я хотел бы обрабатывать любые ошибки HTTP на уровне приложений или что-то подобное.
Моя цель - показать общее тост-сообщение, когда HTTP-запрос завершается с ошибкой.
Любая помощь будет отличной. Благодарю.
Я думаю, что концепция, которую вы любите использовать, - это interceptors
. В vue-resource
вы можете определить их для request
и response
. Пример для перехватчика:
Vue.http.interceptors.push(function(request, next) {
// modify request ...
// stop and return response
next(request.respondWith(body, {
status: 404,
statusText: 'Not found'
}));
});
Спасибо C Sharper за очень хорошую стартовую точку. Я написал здесь свое окончательное решение для потомков.
Я проверил response
статус перехватчика, и если это не ok
, он будет показывать сообщение для конечного потребителя, используя $alert()
функцию.
Здесь код:
Vue.http.interceptors.push(function(request, next) {
next((response) => {
if (!response.ok) {
let message = "<summary>Unexpected error</summary><details>Error: " + response.status + " " + response.url + "</details>";
this.$alert(message, 'Error', {
"type" : "error",
"dangerouslyUseHTMLString" : "true"
});
}
return response;
});
}
axios
илиvue-resource
(или что-нибудь еще)?vue-resource
вmain.js
и теперь я понимаю, что это. Спасибо :)