【问题标题】:Sending GET parameters in Restangular在 Restangular 中发送 GET 参数
【发布时间】:2015-08-25 09:31:55
【问题描述】:

我在我的项目中使用Restangular,之前这段代码在检索对象数组时效果很好:

var params = {name: "Stack", surname: "Overflow"}
var service = Restangular.all('users')
service.getList(params)

来自服务器的响应只是一个对象数组:

[
 {...},
 {...}
]

但是现在我添加了分页,我的响应现在不包含数组,而是包含数组的对象:

{
   totalCount: 500,
   data: [
     {...},
     {...}
   ]
}

我还将service.getList(params) 更改为service.get(params)(因为getList 只需要数组)。

在此更改后,我的 GET 参数未字符串化,即我在调试器请求中看到如下:

users/[object%20Object]

但早些时候(使用getList 方法时)它按我的预期工作:

users?name=Stack&surname=Overflow

这里有什么问题?

【问题讨论】:

  • 我的猜测是 Restangular(我不熟悉的一个库)坚持纯 REST 语义,并且不希望直接 GET 包含除 /thing/id 之外的任何内容。您最好尝试配置 getList / query 方法以接受对象响应

标签: angularjs http restangular


【解决方案1】:

你可以使用customGETLIST方法,看这个:

// https://myapi.com/users?name=Stack&surname=Overflow

Restangular.all('users').customGETLIST('', {
    name: "Stack", 
    surname: "Overflow"
}).then(function (response) {
    console.log(response);
});

customGETLIST(path, [params, headers]):对特定路径执行 GET。在这种情况下,您希望得到一个数组,而不是单个元素。您可以选择设置参数和标题。

文档:HERE

祝你好运!

【讨论】:

    【解决方案2】:

    我可以用这个来解决它:

    var params = {name: "Stack", surname: "Overflow"}
    var service = Restangular.all('users')
    service.customGET("", params) // first parameter is required, so just provide empty string
    

    【讨论】:

      【解决方案3】:

      只需使用 one() 和 get(params):

      var params = {name: "Stack", surname: "Overflow"};
      var service = Restangular.one('users');
      service.get(params).then(function(response) {
         console.log(response);
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 2017-06-23
        相关资源
        最近更新 更多