angular 用拦截器统一处理http请求和响应 比如加token
2024-09-29 05:52:08
想使用angularjs里的htpp向后台发送请求,现在有个用户唯一识别的token想要放到headers里面去,也就是{headres:{'token':1}}
index.html里引入以下js:
angular.module('app.factorys',[])
.factory('httpInterceptor',['$q','$injector','$localStorage',function ($q,$injector,$localStorage) {
var httpInterceptor = {
'responseError' : function(response) {
// ......
return $q.reject(response);
},
'response' : function(response) {
if (response.status == ) {
// console.log('do something...');
}
return response || $q.when(response);
},
'request' : function(config) {
config.headers = config.headers || {};
if ($localStorage.token) {
config.headers.token = $localStorage.token;
// config.headers['X-Access-Token'] = $localStorage.token;
}; return config || $q.when(config); return config;
},
'requestError' : function(config){
// ......
return $q.reject(config);
}
};
return httpInterceptor;
}])
在app里注入factory后,在config里面配置
.config(['$httpProvider',function(){
$httpProvider.interceptors.push(httpInterceptor);
}])
如果你的代码并未做拆分,可以直接在config里面写拦截器
$httpProvider.interceptors.push(['$q','$injector','$localStorage',function ($q,$injector,$localStorage) {
var httpInterceptor = {
'responseError' : function(response) {
// todo...
return $q.reject(response);
},
'response' : function(response) {
if (response.status == ) {
// console.log('do something...');
}
return response || $q.when(response);
},
'request' : function(config) {
config.headers = config.headers || {};
if ($localStorage.token) {
config.headers.ut = $localStorage.token; //把你登录接口返回给你的token存到$localStorage里面,在这里取就好了
// config.headers['X-Access-Token'] = $localStorage.token;
}; return config || $q.when(config);
// return config;
},
'requestError' : function(config){
// todo...
return $q.reject(config);
}
};
return httpInterceptor;
}]);
最新文章
- EC笔记:第4部分:22、所有成员都应该是private的
- WPF入门教程系列二十——ListView示例(二)
- WebForm(一)——IIS服务器、开发方式和简单基础
- 【poj1742】 Coins
- linux第11天 共享内存和信号量
- C++ code: 将程序的输出,保存到txt文档中,且每35个数,自动换行
- leetcode解题—Longest Palindromic Substring
- Android开发之Intent的传值--Application
- 大数据时代之hadoop(三):hadoop数据流(生命周期)
- oracle导库
- empty()和size()的优劣
- poj1681 Network
- .NET程序员所需要注意的网站资源
- matlab练习程序(渲染三原色)
- [UE4]CheckBox
- Spring装配bean(在java中进行显式配置)
- QuickStart系列:docker部署之Mysql
- maven和gradle中,dependency和plugin的区别
- Scrum立会报告+燃尽图(Beta阶段第三次)
- SAP Odata実行命令(2)