2

根据一些 JSON API 规范,例如http://jsonapi.org/format/#urls-individual-resources,服务器应将 GET 请求解释为 /myResources/1,2,3,4,5。

现在 Sails.js 路由器将其发送到findOne操作。

正确处理此问题的最佳方法是什么?

我认为理想情况下,路由器应该以/1,2,3,4,5与其解释相同的方式进行解释?ids[1,2,3,4,5],但我意识到这可能不是微不足道的。

另一种选择是向所有findOne请求添加策略以检查是否req.params('id')有逗号,然后将 id 列表重新格式化为查询字符串,然后重定向到find(这可行吗?)。将策略添加到每个控制器有点烦人。

想法?

4

1 回答 1

0

我认为这是您的建议,但这只是将其置于 findone.js 蓝图顶部的问题。(或将其添加为策略)。只需检查以确保它是一个字符串(以防您已经传递了一个数组。

if(typeof req.params.id === "string"){
    req.params.id = req.params.id.split(',')
}

编辑

对于任何实施者,请记住您的findOne策略将应用于此请求(请参阅评论)。例如,假设您有一个策略find,将一些参数应用于 req.options.where 以根据用户的权限过滤记录。这将不适用于这种情况!

编辑 除非你只是让你的路线将它们定向到索引/查找路线。您可以将蓝图路由用于其他所有内容,但在 url 的“关键”部分使用逗号。

于 2014-11-22T20:51:26.090 回答