我面临的问题很少,我的Web 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);
}
};
}
]);
答案 0 :(得分:0)
通过编写此代码,我找到了忽略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);
}
};
}
]);