有没有办法只添加特定于一个特定请求的拦截器,比如transformRespponse?
这样做将添加将在每个请求上执行的全局拦截器。
$httpProvider.interceptors.push(function($q) {
return {
'response': function(response) {
if (isBad(response)) {
return $q.reject(rejectionReason(response));
}
}
};
});
答案 0 :(得分:0)
我认为你过度设计解决方案。 $http
已经通过两次回调返回了承诺
$http.get('your_url').then(onSuccess, onError)
function onSuccess (response) {
if (isBad(response)) {
return $q.reject(rejectionReason(response));
}
// do some magic
}
function onError(response){
return $q.reject(rejectionReason(response))
}
实际上isBad可能应该发生在服务器端并返回一个http错误,因此它由onError
答案 1 :(得分:0)
你可以在响应函数中获取请求url
$httpProvider.interceptors.push(function($q) {
return {
'response': function(response) {
if(response.config.url == '/particular_request_url'){
//do something
}
return response
}
};
});