【问题标题】:Encoded params in ngResourcengResource 中的编码参数
【发布时间】:2018-06-16 00:01:30
【问题描述】:

我正在尝试将部分 url(如 /one/two/three)作为参数传递给 ngResource:

angular.module('restapi', ['ngResource'])
    .factory('RESTApi.Generic', function($resource){
        return $resource('/some_action:url', { url: '@url' });
    });

由于我的服务器不理解转换后的 url,导致 404:

http://localhost/some_action%2Fone%2Ftwo%2Fthree

有什么办法可以绕过这种行为并仍然使用 ngResource(而不是 $http)?

【问题讨论】:

    标签: angularjs ngresource


    【解决方案1】:

    不,没有办法。默认情况下,每个参数都使用以下 javascript 函数进行编码:encodeURIComponent

    为什么不使用/some_action/:firstParam/:secondParam/:thirdParam 之类的路径?

    【讨论】:

    • 我将 url 的最后一位作为参数传递,因为我是从其他地方读取它(我需要它是动态的)。谢谢!
    【解决方案2】:

    有一个快速修复的解决方法:

    // In angular-resource.js and method encodeUriSegment
      function encodeUriSegment(val) {
        return encodeUriQuery(val, true).
          replace(/%26/gi, '&').
          replace(/%3D/gi, '=').
          replace(/%2B/gi, '+'). 
          replace(/%2F/gi, '/'); // <--- Add this line
      }
    

    参考https://github.com/angular/angular.js/issues/1388

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2017-06-05
      • 1970-01-01
      • 2017-05-15
      • 2014-07-30
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多