首页 > 语言 > JavaScript > 正文

angular中的http拦截器Interceptors的实现

2024-05-06 15:11:00
字体:
来源:转载
供稿:网友

在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);        }      };    });  }]);             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选