我正在尝试将一个数组从 AngularJS 传递给我们的 API。但是,在发送时,参数会重复而不是作为数组发送。这是我的代码:
angular.module('sigApp.services', ['ngResource']).
// Fetch cases from server
service('caseFetcher', ['$resource', function($resource) {
this.getCases = function(params) {
console.log('params: ',params);
return $resource('/v1/cases/', params);
};
}]);
这是生成的 URL(缩写):/v1/cases?status=OPEN&status=HELD
这是我想要的 URL: /v1/cases?status%5B0%5D=OPEN&status%5B1%5D=HELD (又名 ?status[0]=OPEN&status 1 =HELD )
这是上面代码中记录的对象的屏幕截图:
我已经尝试过最新版本的 angularjs (1.2rc1) 并且还尝试了 Restangular 插件。无论我尝试什么,我都会多次传递参数,而不是数组格式。我们的 API 不能处理具有相同键的多个值。
有任何想法吗?
编辑:当另一个问题( AngularJS:ngResource 和对象数组作为 URL 的参数)根本不是这样时,有几个人将其标记为重复。另一个问题涉及通过 POST 发送一个数组,我正在尝试执行一个 GET 请求(默认情况下设置为 isArray: true),并且我只想将一个参数作为数组传递,这个答案似乎没有帮我。那么有人可以帮忙吗?
更新我在下面回答了我自己的问题,但正如评论所言,我正在为遇到此问题的任何人提供更多信息。我们在后端使用 Play Framework 2.1。我无法生成我最初在上面发布的编号数组,但能够让它工作只是一个非索引数组,所以这是生成的最终工作的 URL:
/v1/cases?status%5B%5D=OPEN&status%5B%5D=HELD(又名 ?status[]=OPEN&status[]=HELD)
希望这对其他人有帮助