山河集团建设有限公司网站温州联科网站建设
山河集团建设有限公司网站,温州联科网站建设,wordpress登录菜单,电子商务o2o是什么意思任何时候#xff0c;如果我们想要为请求添加全局功能#xff0c;例如身份认证、错误处理等#xff0c;在请求发送给服务器之前或服务器返回时对其进行拦截#xff0c;是比较好的实现手段。 angularJs通过拦截器提供了一个从全局层面进行处理的途径。
四种拦截器
实现 req… 任何时候如果我们想要为请求添加全局功能例如身份认证、错误处理等在请求发送给服务器之前或服务器返回时对其进行拦截是比较好的实现手段。 angularJs通过拦截器提供了一个从全局层面进行处理的途径。
四种拦截器
实现 request 方法拦截请求 request: function(config) {
// do something on request success
return config || $q.when(config);
} 该方法会在 $http 发送请求后台之前执行因此你可以修改配置或做其他的操作。该方法接收请求配置对象(request configuration object)作为参数然后必须返回配置对象或者 promise 。如果返回无效的配置对象或者 promise 则会被拒绝导致 $http 调用失败。
实现 requestError 方法拦截请求异常 requestError: function(rejection) {
// do something on request error return $q.reject(rejection);
} 有时候一个请求发送失败或者被拦截器拒绝了请求异常拦截器会俘获那些被上一个请求拦截器中断的请求。它可以用来恢复请求或者有时可以用来撤销请求之前所做的配置比如说关闭进度条激活按钮和输入框什么之类的。
实现 response 方法拦截响应 response: function(response) {
// do something on response success
return response || $q.when(response);} 该方法会在 $http 接收到从后台过来的响应之后执行因此你可以修改响应或做其他操作。该方法接收响应对象(response object)作为参数然后必须返回响应对象或者 promise。响应对象包括了请求配置(request configuration)头(headers)状态(status)和从后台过来的数据(data)。如果返回无效的响应对象或者 promise 会被拒绝导致$http 调用失败。
实现 responseError 方法拦截响应异常 responseError: function(rejection) {
// do something on response error return $q.reject(rejection);
} 有时候我们后台调用失败了也有可能它被一个请求拦截器拒绝了或者被上一个响应拦截器中断了。在这种情况下响应异常拦截器可以帮助我们恢复后台调用。
拦截器核心
拦截服务工厂 var app angular.module(ajaxHttp, []);
app.factory(httpInterceptor, [ $q, $rootScope, function($q, $rootScope) {
return {
request: function(config) {
// do something on request success
return config || $q.when(config);
},
requestError: function(rejection) {
// do something on request error
return $q.reject(rejection)
},
response: function(response) {
// do something on response success
return response || $q.when(response);
},
responseError : function(rejection) {
// do something on response error
return $q.reject(rejection);
}
};
}]); 注册拦截工厂方法 app.config([$httpProvider, function($httpProvider) {
$httpProvider.interceptors.push(httpInterceptor);
}]); 示例
对401404的拦截处理 app.config([$httpProvider, function($httpProvider) {
$httpProvider.interceptors.push(httpInterceptor);
}]);
app.factory(httpInterceptor, [$q, $injector, function($q, $injector) {
return {
responseError: function(response) {
if (response.status 401) {
var rootScope $injector.get($rootScope);
var state $injector.get($rootScope).$state.current.name;
rootScope.stateBeforLogin state;
rootScope.$state.go(login);
return $q.reject(response);
}
else if (response.status 404) {
console.log(404!);
return $q.reject(response);
}
}
};
]); 参考
1、http://www.jb51.net/article/77099.htm
2、http://docs.ngnice.com/api/ng/service/$http
更多专业前端知识请上
【猿2048】www.mk2048.com
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90316.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!