【问题标题】:AngularJS - How to Send Common URL Parameters on All Request?AngularJS - 如何在所有请求上发送通用 URL 参数?
【发布时间】:2016-11-01 22:05:13
【问题描述】:

我想在所有请求上发送相同的 url 参数,无论是 get 还是 post 请求,如下所示:

?region=us&toolName=abc

是否可以使用 AngularJS 拦截器?还是有其他更好的方法?

感谢您的帮助。

【问题讨论】:

标签: angularjs http interceptor url-parameters


【解决方案1】:

最好使用 httpInterceptor,然后您可以检查其他参数是否已经存在并扩展它们...或仅使用显示的参数

【讨论】:

    【解决方案2】:

    AngularJS 的 $http 方法允许您通过 config 对象指定您的 HTTP 请求动词以及此类参数,该对象可以包含 params 对象,该对象可以类似于 { region: "us", toolName: "abc" },而后者又成为查询字符串.使用示例:

    $http({ url: "test.aspx", method: "GET", params: { region: "us", toolName: "abc" } }).then(
    function(response){
         alert("success!");
    }, function(response){
        alert("failure.");
    }
    

    【讨论】:

      【解决方案3】:

      创建一个服务来设置默认参数请求:

      'use strict';
      
      var ParamsService = function() {
      
        return {
          set: function (params) {
            var defaultParams = {
              region: 'us',
              toolName: 'abc'
            };
      
            // Use any function to extend objects (currently, I'm using lodash)
            return _.extend(defaultParams, params);
          }
        };
      };
      
      ParamsService.$inject = [
      
      ];
      

      请求:

      $http({ 
        url: 'url.json', 
        method: 'GET', 
        params: ParamsService.set({otherProperty: otherValue}) 
      })
      .then(
        function (data) {
      
        },
      
        function (error) {
      
        }
      );
      

      这不是很好的解决方案,但可以帮助您解决问题:)

      【讨论】:

        【解决方案4】:

        $httpProvider.defaults.headers.common['key'] = 'value'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-05
          • 2013-03-20
          • 1970-01-01
          • 2018-12-14
          • 2012-06-02
          相关资源
          最近更新 更多