#angularjs
#angularjs
Вопрос:
Я сталкиваюсь с небольшой проблемой, мой веб-API возвращает мне ответ 304 ‘Not Modified’, когда нет изменений в данных, отправляемых для обновления, и в моем приложении реализованы страницы ошибок, которые перенаправляют меня на страницу ошибки. Я хочу, чтобы это не отображалось как ошибка, вместо этого это следует игнорировать.
пожалуйста, помогите мне, как игнорировать этот ответ с помощью HTTP-перехватчиков. Ниже написан код, который перехватывает HTTP-ответы, а затем перенаправляет меня на определенную страницу на основе ошибки, мне нужно игнорировать ответ 304 здесь:
myApp.factory('httpErrorResponseInterceptor', ['$q', '$location',
function ($q, $location) {
return {
response: function (responseData) {
return responseData;
},
responseError: function error(response) {
switch (response.status) {
case 401:
$location.path(baseUrl 'Account/Login');
break;
case 403:
$location.path(baseUrl '403');
break;
case 404:
$location.path(baseUrl '404');
break;
case 405:
$location.path(baseUrl '405');
break;
case 500:
$location.path(baseUrl '500');
break;
case 503:
$location.path(baseUrl '503');
break;
case 408:
$location.path(baseUrl 'timeout');
break;
default:
$location.path(baseUrl 'error');
}
return $q.reject(response);
}
};
}
]);
Комментарии:
1. Покажите нам ваше «приложение внедрило страницы ошибок, которые перенаправляют меня на страницу ошибки».. В принципе, вы можете перехватить и проверить статус 304 и сделать, если еще можно это проигнорировать.
2. Я использую HTTP-перехватчик, и я должен игнорировать ответ здесь.
Ответ №1:
Я нашел решение игнорировать ответ ошибки 304 ‘Not Modified’, написав этот код:
//ignore 304-'Not Modified' response
if (response.status === 304) {
return $q.resolve(response);
}
и полное решение будет следующим:
smartBizzApp.factory('httpErrorResponseInterceptor', ['$q', '$location',
function ($q, $location) {
return {
response: function (responseData) {
return responseData;
},
responseError: function error(response) {
//ignore 304-'Not Modified' response
if (response.status === 304) {
return $q.resolve(response);
}
switch (response.status) {
case 401:
$location.path(baseUrl 'Account/Login');
break;
case 403:
$location.path(baseUrl '403');
break;
case 404:
$location.path(baseUrl '404');
break;
case 405:
$location.path(baseUrl '405');
break;
case 500:
$location.path(baseUrl '500');
break;
case 503:
$location.path(baseUrl '503');
break;
case 408:
$location.path(baseUrl 'timeout');
break;
default:
$location.path(baseUrl 'error');
}
return $q.reject(response);
}
};
}
]);