Angular统一拦截器(httpInterceptor)
? var myApp = angular.module("myApp",[]); //首先定一个app
//定义http拦截器httpInterceptor,这个factory返回的对象可以拥有responseError,response,request,requestError这些属性,分别对应拦截的处理。
myApp.factory('httpInterceptor',[ '$q',function($q) {
var httpInterceptor = {
'responseError' : function(response) { //响应错误拦截
//这里可以对不同的响应错误进行处理,比如根据返回状态码进行特殊处理
switch(response。status) {
case 404:
alert("找不到页面");
break;
case 403:
alert("没有权限");
break;
defalut:
....
}
return $q.reject(response);
},'response' : function(response) { //响应拦截
//这里可以对所有的响应的进行处理
return response;
},'request' : function(config) { //请求拦截
//这里可以对所有的请求进行处理
return config;
},'requestError' : function(config){ //请求错误拦截
//这里可以对所有的请求错误进行处理
return $q.reject(config);
}
}
return httpInterceptor;
}
//定义了httpInterceptor之后,需要手动添加到$httpProvider.interceptors中去才能让拦截器生效
myApp.config([ '$httpProvider',function($httpProvider) {
$httpProvider.interceptors.push('httpInterceptor'); //添加拦截器
} ]);
使用还是比较简单的,但是* 需要注意是拦截的请求只能是通过 $.ajax({
url: '/test',dataType: 'json',statusCode: { //对响应状态码进行拦截
404: function(){
alert("找不到页面");
},
403: function(){
alert("没有权限");
}
......
},
success: function(){
//对成功响应进行处理
},error: function(){
//对响应错误进行处理
}
});
&esmp; 上面 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |