欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

angular中的http攔截器Interceptors的實現(xiàn)

在angularJs中增加了一個對全局的http請求統(tǒng)一做出處理的api--interceptors

創(chuàng)新互聯(lián)是一家網(wǎng)站設計公司,集創(chuàng)意、互聯(lián)網(wǎng)應用、軟件技術為一體的創(chuàng)意網(wǎng)站建設服務商,主營產(chǎn)品:響應式網(wǎng)站設計高端網(wǎng)站設計成都營銷網(wǎng)站建設。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡互動的體驗,以及在手機等移動端的優(yōu)質(zhì)呈現(xiàn)。成都網(wǎng)站設計、網(wǎng)站建設、移動互聯(lián)產(chǎn)品、網(wǎng)絡運營、VI設計、云產(chǎn)品.運維為核心業(yè)務。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務。

Interceptors 有兩個處理時機,分別是:

  • 其它程序代碼執(zhí)行 HTTP 請求之后,在實際從瀏覽器發(fā)出請求之前,即處理請求
  • 得到請求的響應之后,在交給其它程序代碼處理之前,即處理請求的響應

其引用場景包括

  • 全局處理錯誤
  • 統(tǒng)一進行身份驗證一類的處理
  • 對所有發(fā)出去的請求進行預處理
  • 對所有收到的響應進行預處理等等

使用實例如下:

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,區(qū)分首次授信還是追加授信

            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){

                //標識企業(yè)提交

                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 ,這個四個方法非必選,可根據(jù)需要調(diào)用,前兩個是請求的前置處理,后兩個是針對請求的響應的處理。

  • request :接收一個參數(shù),它是 $http 中的標準 config 對象,同時也需要返回一個標準 config ,此時可以添加各類身份驗證信息,同時也可在此啟動進度條
  • requestError :當有多個 Interceptor 的時候, requestError 會在前一個 Interceptor 拋出錯誤或者執(zhí)行 $q.reject() 時執(zhí)行,接收的參數(shù)就對應的錯誤
  • response :接受一個請求對象參數(shù),可以不處理就直接返回,此時也可以將進度條顯示為成功完成,當然,如果后端 API 返回自定義錯誤時,HTTP 的狀態(tài)碼仍然是 200 得話,便在這里處理自定義錯誤,也可以對返回數(shù)據(jù)做一些處理,注意要將進度條置為完成
  • responseError :這個是重頭戲,即可以處理標準的 Http 錯誤,如服務器沒有響應時,或者 PHP 之類的 CGI 經(jīng)常出現(xiàn)的 502 一類,還可以處理 HTTP 狀態(tài)碼不是 200 的各類自定義錯誤

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章名稱:angular中的http攔截器Interceptors的實現(xiàn)
瀏覽地址:http://www.chinadenli.net/article4/gcccoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版外貿(mào)網(wǎng)站建設定制開發(fā)網(wǎng)站建設關鍵詞優(yōu)化用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)