如何创建一个 http 拦截器以在“响应”中返回错误
How to create a http interceptor to return an error within 'response'?
我有一个基本的角度http
拦截器来处理我的所有错误。我需要检查返回的data
是否都是每种类型的string
,以将其处理为错误,而不是成功。
'response': function(response) {
if(typeof response.data === 'string') {
response.status = 422;
return $q.reject(response);
} else {
return response;
}
},
'responseError': function(rejection) {
return $q.reject(rejection);
}
目前,如果data
是string
类型,它将输入正确的if语句,更改状态并返回。虽然,Angular并不认为这是一个错误。在我的http
函数中,它既不调用成功也不调用错误回调。如果 API 返回合法错误,它将成功进入"响应错误",并按预期调用错误回调。
$http({
method: 'POST',
url: "http://mydomain/api/login",
data: $.param({
username: "test",
password: "test"
}),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(successCallback(response), errorCallback(response));
如何让我的拦截器返回 Angular 可以识别的错误,以从我的 http
函数输入错误回调?
作为解决方案,您需要为常见的 ajaz 响应和响应错误创建一个工厂,如下所示,并将其注入到系统配置中,如下所示。
角度工厂在单独的文件中,并在索引中加载。
angular.module('yourApp').factory('myHttpInterceptor', function($q, $location) {
return {
// optional method
'response': function(response) {
// do something on success
if(typeof response.data === 'string') {
response.status = 422;
return $q.reject(response);
} else {
return response;
}
},
// optional method
'responseError': function(rejection) {
// do something on error
return $q.reject(rejection);
}
};
});
现在在您的应用程序中拦截配置.js
.config([ '$httpProvider',
function($httpProvider) {
$httpProvider.interceptors.push('myHttpInterceptor');
} ])
这对我有用。
相关文章:
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 自定义验证并格式化从数据数据库返回的响应-BEGINNER
- 如何执行ajax响应返回的javascript函数
- 尊重“; 〃;从HTML显示中的API响应返回的换行符(和特殊字符)
- Ajax响应返回null
- AJAX-没有得到简单的php响应(返回“undefined”)
- 将元素添加到 Ajax 响应返回的表单中
- 如何从Ajax响应返回动态javascript对象的值
- 为什么AJAX响应返回未定义
- 使用javascript解析作为JSON响应返回的java映射
- 如何保存从谷歌地图API响应返回的结果
- Android HttpPost响应返回网站的代码
- 双重拆分服务器响应返回错误
- 我如何发送多个请求相同的文件,并获得所需的响应返回php使用jquery ajax
- 支付导航表单php支付网关和返回php(响应返回php页面)
- CoffeeScript一直触发错误,当我得到一个200响应返回
- 使用$http时,视图关闭.棱角分明?当401作为响应返回时,Ng-view将关闭
- Mongodb POST响应返回0
- 从ajax响应返回数据
- 将JSON响应返回的HTML片段插入到DOM中