Ng Http Request/response格式轉換


angular作為Single Page Application推薦的交互方式當然是基於json的ajax調用。但今天要說的是當你不幸工作在一個遺留或者不可控制的服務上,而這服務是基於非json提交方式(或許是常規表單(form)提交,或者其他自定義數據格式),那么我們只能改變ng內部$http默認request/response格式轉化方式。

所幸的是ng $http給我們提供了多種可用方式轉化數據格式(下面demo將以form提交方式為例):

***對於部分單獨的http request設置:

對於http ajax方式最后一個參數都是關於http的配置信息,其中包括一項transformRequest,我們可以利用transformRequest在ajax發送數據之前改變數據的格式,例如下邊的demo:

$http.post("/url", {
      id: 1,
      name: "greengerong"
    }, {
      transformRequest: function(request) {
        return $.param(request);
    }
});

這里利用jQuery的$.param進行表單提交方式的格式轉化,所以我們能夠看見的request body 為:

id=1&name=greengerong

online demo;

***對於整個app的http request設置:

如果我們需要對整個http的數據轉化格式進行設置,那么可以選用在config階段對$httpProvider默認行為進行設置:

angular.module("app", [])
.config(["$httpProvider", function($httpProvider) {
      $httpProvider.defaults.transformRequest = [
        function(request) {
          return $.param(request);
        }
      ];
    }
]);

這樣我們就可以輕易的轉化為form提交方式。

同樣$http也為我們提供了transformResponse方式,我們也可以創建自己的response轉化,比如json之前加入自定義前綴防止json array攻擊等等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM