我如何在拦截器中手动使 angular $http 请求失败
How do i manually fail an angular $http requests in an interceptor
所以我有一个服务器每次都返回 200 作为响应。我需要检查响应是否有错误 response.data.error
如果我发现错误,我需要将 http 请求发送到应用程序代码中的 catch 方法。
这是我想要发生的事情的一个例子..
拦截器代码
// interceptor code
{
response:function(response){
if (response.data.error) {
return $q.reject(response)
}else{
return response
}
},
responseError:function(rejection){
// error handling logic
return $q.reject(rejection)
}
}
应用代码
// application code
$http.get('/api/stuff')
.then(function(){
// do success stuff
}).catch(function(){
// the function i want to run!!!
})
尝试通过以下方式捕获错误:
$http.get('/api/stuff')
.then(function(data){
console.log(data); // do success stuff
}, function(error){
console.log(error); // will catch your error I hope
}
我认为 .catch
不会捕获它,您需要在 .then
块中执行检查。
好吧,这更像是一个愚蠢的错误。这是我做错的地方。
像个笨蛋一样,我 return 在函数内部而不是直接在响应内部编辑。所以我最终做的是创建一个标志,如果该标志为真,那么 return 直接在响应函数上。
拦截器代码
// interceptor code
{
response:function(response){
myCustomErrorFunction(){
if (response.data.error) {
return $q.reject(response)
}else{
return response
}
}
},
responseError:function(rejection){
// error handling logic
return $q.reject(rejection)
}
}
应用代码
// application code
$http.get('/api/stuff')
.then(function(){
// do success stuff
}).catch(function(){
// the function i want to run!!!
})
感谢大家的帮助。
所以我有一个服务器每次都返回 200 作为响应。我需要检查响应是否有错误 response.data.error
如果我发现错误,我需要将 http 请求发送到应用程序代码中的 catch 方法。
这是我想要发生的事情的一个例子..
拦截器代码
// interceptor code
{
response:function(response){
if (response.data.error) {
return $q.reject(response)
}else{
return response
}
},
responseError:function(rejection){
// error handling logic
return $q.reject(rejection)
}
}
应用代码
// application code
$http.get('/api/stuff')
.then(function(){
// do success stuff
}).catch(function(){
// the function i want to run!!!
})
尝试通过以下方式捕获错误:
$http.get('/api/stuff')
.then(function(data){
console.log(data); // do success stuff
}, function(error){
console.log(error); // will catch your error I hope
}
我认为 .catch
不会捕获它,您需要在 .then
块中执行检查。
好吧,这更像是一个愚蠢的错误。这是我做错的地方。
像个笨蛋一样,我 return 在函数内部而不是直接在响应内部编辑。所以我最终做的是创建一个标志,如果该标志为真,那么 return 直接在响应函数上。
拦截器代码
// interceptor code
{
response:function(response){
myCustomErrorFunction(){
if (response.data.error) {
return $q.reject(response)
}else{
return response
}
}
},
responseError:function(rejection){
// error handling logic
return $q.reject(rejection)
}
}
应用代码
// application code
$http.get('/api/stuff')
.then(function(){
// do success stuff
}).catch(function(){
// the function i want to run!!!
})
感谢大家的帮助。