根据一些 JSON API 规范,例如http://jsonapi.org/format/#urls-individual-resources http://jsonapi.org/format/#urls-individual-resources,服务器应将 GET 请求解释为 /myResources/1,2,3,4,5。
现在 Sails.js 路由器将其发送到findOne
action.
正确处理此问题的最佳方法是什么?
我认为理想情况下路由器应该解释/1,2,3,4,5
以同样的方式解释?ids[1,2,3,4,5]
,但我意识到这可能不是微不足道的。
另一种选择是向所有添加策略findOne
请求检查是否req.params('id')
有逗号,然后将 ids 列表重新格式化为查询字符串,然后重定向到find
(这行得通吗?)。将策略添加到每个控制器有点烦人。
想法?
我认为这是您的建议,但这只是将其放在 findone.js 蓝图顶部的问题。 (或将其添加为策略)。只需检查以确保它是一个字符串(如果您已经传递了一个数组)。
if(typeof req.params.id === "string"){
req.params.id = req.params.id.split(',')
}
EDIT:
对于任何实施者,请记住您的findOne
政策将应用于此请求(请参阅评论)。例如,假设您有一项政策find
将一些参数应用于 req.options.where 以根据用户的权限过滤记录。这在本例中不适用!
EDIT除非你只是让你的路由将它们定向到索引/查找路由。您可以将蓝图路由用于其他所有内容,但 url 的“关键”部分中带有逗号的路由除外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)