Angular 带有整数参数的资源构建错误 url

Angular resource with integer parameter builds wrong url

我正在尝试使用以下代码与 RESTFul 服务通信:

$scope.makeRequest = function(){
    params = {};
    params['3'] = 'X';
    params['length'] = 5;

    var resource = $resource('/foo', {});
    var result = resource.query(params, function(){
       console.log(result);
    });
}

此请求有效,并调用预期的 url:http://localhost:3000/foo?3=X&length=5

但是,当整数字段是'length'字段的值减一时:

$scope.makeRequest = function(){
    params = {};
    params['4'] = 'X';
    params['length'] = 5;

    var resource = $resource('/foo', {});
    var result = resource.query(params, function(){
       console.log(result);
    });
}

此代码段忽略 'length' 字段,并向:http://localhost:3000/foo?4=X

发出请求

我的问题是:

  1. 这种行为从何而来?
  2. 有没有更好的方法来提出这个请求?考虑到我需要多个整数参数,我可以避免使用多个整数参数吗?

您是否尝试过像这样设置文字对象:

params = {'4':'X', 'length': '5'}