为什么angular $resource会对同一个URL查询和获取不同的响应?

Why does angular $resource query and get expect different responses from the same URL?

本文关键字:获取 响应 查询 URL angular resource 同一个 为什么      更新时间:2023-09-26

我问这个问题,因为它让我觉得我不能做一些'角化'的方式,因为我的代码是不必要的复杂。

我定义了一个资源

Question = $resource("/questions/:id", {id: "@id"});

现在如果我输入

Question.get(1);

它将转到/questions/1,并期望一个对象作为响应如果我做

Question.query({id: 1});

它将转到/questions/1,但期望一个数组作为响应

我知道为什么它会这样做,因为isArray的默认设置。

我有客户端代码,我不知道有多少id将查询。我可以通过让我的angular代码执行

来轻松解决这个问题
if (ids.length == 1)
  Question.get(ids);
else
  Question.query({id: ids})

和让我的服务器发送一个对象时,数组长度为1,但这似乎过于复杂,让我认为我必须去这个错误的方式。

有更干净的解决方案吗?

不确定这是否是有角度的方式,但我想到的解决方案是在我的查询上使用不同的参数,以便它在rails上击中index方法,而不是显示,因此可以安全地始终返回一个数组。

一样:

Question = $resource("/questions/:id", {id: "@id"});
q = Question.get(1);
// Performs GET /questions/1
// q = { id: 1, ...};
q = Question.query({ids: 1});
// Performs GET /questions?ids=1
// q = [{id: 1, ... }];
q = Question.query({ids: [1,2]});
// Performs GET /questions?ids=1&ids=2
// q = [{id: 1, ... }, {id: 2, ...}];