根据一些JSON API规范,例如http://jsonapi.org/format/#urls-individual-resources,服务器应解释对/ myResources / 1,2,3,4,5的GET请求。
现在,Sails.js路由器将此信息发送给findOne
操作。
正确处理此问题的最佳方法是什么?
我认为理想情况下路由器应该像解释/1,2,3,4,5
那样解释?ids[1,2,3,4,5]
,但我意识到这可能并不简单。
另一个选项是向所有findOne
请求添加一个策略,以检查req.params('id')
是否有逗号,然后将id列表重新格式化为查询字符串,然后重定向到find
(将这项工作?)。将策略添加到每个控制器都很烦人。
思想?
答案 0 :(得分:0)
我认为这是你的建议,但这只是把它放在findone.js蓝图的顶部。 (或将此作为政策添加)。只需检查以确保它是一个字符串(包括你已经传递的数组。
if(typeof req.params.id === "string"){
req.params.id = req.params.id.split(',')
}
修改强>:
对于任何实施者,请注意,您的findOne
政策将应用于此请求(请参阅评论)。例如,假设您有find
的策略,该策略将一些参数应用于req.options.where以根据用户的权限过滤记录。在这种情况下,这不适用!
修改强> 除非您只是将您的路线指向索引/查找路线。您可以将蓝图路线用于其他所有内容,但在"键"中使用逗号。网址的一部分。