所以我直接从角度HTTP文档中删除了拦截器,但这仍然无效。 "请求"和#34;回应"函数被调用,但从来没有" requestError"或者#34; responseError"。
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(function ($q) {
return {
'request': function (config) {
return config; //gets called
},
'requestError': function (rejection) {
return $q.reject(rejection); //Never gets called
},
'response': function (response) {
return response; //gets called
},
'responseError': function (rejection) {
return $q.reject(rejection); //Never gets called
}
};
});
}]);
在服务器上我返回400,但实际上任何错误都会发生。这是服务
User.publicProfileGetProfile = function (value, type) {
return $http({
url: '/public/profile/' + type + '/' + value,
method: 'GET'
}).then(function (response) {
return response;
}, function(error){
return error;
});
};
没有调用错误函数,每个响应都通过响应函数。与往常一样,标准角度误差与错误请求(400)一起显示。当返回400错误时,它只是“未定义”'通过“回复”#39;拦截器中的功能。
如果我忘记包含任何重要信息,请告诉我。
答案 0 :(得分:0)
通过使用return
,错误处理程序将转换拒绝成功。而是使用throw
来排除拒绝。
User.publicProfileGetProfile = function (value, type) {
return $http({
url: '/public/profile/' + type + '/' + value,
method: 'GET'
}).then(function onSuccess(response) {
return response;
}, function onReject(error){
//return converts rejection to success
//return error;
//use throw to chain rejection
throw error;
});
};
答案 1 :(得分:0)
当我看到JSFiddle(来自@georgeawg)工作正常时,我确保我看起来完全一样。当它没有工作时,我环顾四周,看看是否有其他可能导致问题的拦截器。我有另一个拦截器,它首先被击中并返回任何错误作为响应,然后他们将通过这个,它将处理它作为一个成功的响应。我把它删除了,现在一切似乎都正常了!