angular中的http拦截器Interceptors的实现
发布时间 - 2026-01-10 23:12:15 点击率:次在angularJs中增加了一个对全局的http请求统一做出处理的api--interceptors

Interceptors 有两个处理时机,分别是:
- 其它程序代码执行 HTTP 请求之后,在实际从浏览器发出请求之前,即处理请求
- 得到请求的响应之后,在交给其它程序代码处理之前,即处理请求的响应
其引用场景包括
- 全局处理错误
- 统一进行身份验证一类的处理
- 对所有发出去的请求进行预处理
- 对所有收到的响应进行预处理等等
使用实例如下:
commonService.config(['$httpProvider',function($httpProvider){
//$httpProvider.defaults.headers.common = {'X-Auth-Token': $.cookie('x_auth_token'),'Content-Type':'application/json;charset=UTF-8'};
//添加拦截器;
$httpProvider.interceptors.push(function ($q) {
return {
request: function (obj) {
$('.loading').show();
obj.headers['X-Auth-Token'] = $.cookie('x_auth_token');
if(!obj.headers['Content-Type'])
obj.headers['Content-Type'] = 'application/json;charset=UTF-8';
var url, params,method;
//加盟店请求
mylog('jiamengdian::',sessionStorage.getItem("chainStorefrnId"));
if(sessionStorage.getItem("chainStorefrnId")){
//增加操作人id,name和storeid等信息
//操作人姓名
var operatorName = $.cookie("userType") == "employee" ? decodeURI($.cookie("username")) : decodeURI($.cookie("frnName"));
//操作人id
var operatorId = $.cookie("userId");
//加盟店id
var operatorStoreId = $.cookie("frnId");
if (obj.method) {
method = obj.method.toLowerCase();
} else {
method = "get";
}
//处理url,区分首次授信还是追加授信
var flag_url = sessionStorage.getItem('chainStoreFlag');
mylog('flag_url',flag_url);
if(flag_url && flag_url == "firstcredit"){
//提交需要加上加盟店标识
if(obj.url.indexOf("firstcredit/createPerFirstCredit")!=-1){
//标识个人提交
obj.url = obj.url.replace('firstcredit/createPerFirstCredit','firstcredit/perFirstCreditByFranchisee');
}
else if(obj.url.indexOf("firstcredit/createBusiFirstCredit")!=-1){
//标识企业提交
obj.url = obj.url.replace('firstcredit/createBusiFirstCredit','firstcredit/createBusiFirstCreditByFranchisee');
}
} else {
url = obj.url + "?creditType=1&operatorName=" + operatorName + "&operatorId=" + operatorId + "&operatorStoreId=" + operatorStoreId;
}
}
return obj;
},
response: function (res) {
$(".loading").hide();
return res;
},
responseError: function (err) {
$(".loading").hide();
return $q.reject(err);
}
};
});
}]);
改api共有4个方法,分别为request ,requestError ,response ,responseError ,这个四个方法非必选,可根据需要调用,前两个是请求的前置处理,后两个是针对请求的响应的处理。
- request :接收一个参数,它是 $http 中的标准 config 对象,同时也需要返回一个标准 config ,此时可以添加各类身份验证信息,同时也可在此启动进度条
- requestError :当有多个 Interceptor 的时候, requestError 会在前一个 Interceptor 抛出错误或者执行 $q.reject() 时执行,接收的参数就对应的错误
- response :接受一个请求对象参数,可以不处理就直接返回,此时也可以将进度条显示为成功完成,当然,如果后端 API 返回自定义错误时,HTTP 的状态码仍然是 200 得话,便在这里处理自定义错误,也可以对返回数据做一些处理,注意要将进度条置为完成
- responseError :这个是重头戏,即可以处理标准的 Http 错误,如服务器没有响应时,或者 PHP 之类的 CGI 经常出现的 502 一类,还可以处理 HTTP 状态码不是 200 的各类自定义错误
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# http拦截器
# angular
# angular2
# http
# 拦截
# 对angular 监控数据模型变化的事件方法$watch详解
# 关于angular js_$watch监控属性和对象详解
# 分享Angular http interceptors 拦截器使用(推荐)
# 详解AngularJS用Interceptors来统一处理HTTP请求和响应
# Angular通过 HTTP Interceptor 实现 HTTP 请求超时监控的例子
# 自定义
# 也可
# 进度条
# 身份验证
# 授信
# 在这里
# 还可以
# 首次
# 多个
# 在此
# 它是
# 分别为
# 要将
# 仍然是
# 在前
# 以对
# 抛出
# 大家多多
# 增加了
# 后端
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在自有机房高效搭建专业网站?
如何正确选择百度移动适配建站域名?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
文字头像制作网站推荐软件,醒图能自动配文字吗?
Android Socket接口实现即时通讯实例代码
如何为不同团队 ID 动态生成多个独立按钮
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
黑客入侵网站服务器的常见手法有哪些?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
活动邀请函制作网站有哪些,活动邀请函文案?
如何正确下载安装西数主机建站助手?
Swift中循环语句中的转移语句 break 和 continue
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
如何在建站之星网店版论坛获取技术支持?
想要更高端的建设网站,这些原则一定要坚持!
大连 网站制作,大连天途有线官网?
太平洋网站制作公司,网络用语太平洋是什么意思?
网站制作软件有哪些,制图软件有哪些?
在Oracle关闭情况下如何修改spfile的参数
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Android使用GridView实现日历的简单功能
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
高端网站建设与定制开发一站式解决方案 中企动力
如何在新浪SAE免费搭建个人博客?
Laravel如何配置任务调度?(Cron Job示例)
如何快速搭建二级域名独立网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何利用DOS批处理实现定时关机操作详解
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
中山网站制作网页,中山新生登记系统登记流程?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel如何生成API文档?(Swagger/OpenAPI教程)
如何用VPS主机快速搭建个人网站?
如何在橙子建站中快速调整背景颜色?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel Docker环境搭建教程_Laravel Sail使用指南
网站建设整体流程解析,建站其实很容易!
如何基于PHP生成高效IDC网络公司建站源码?
手机软键盘弹出时影响布局的解决方法
原生JS获取元素集合的子元素宽度实例
如何用免费手机建站系统零基础打造专业网站?

