帆.js如何修改路由以插入逗号分隔的 ID 列表

Sails.js how to modify routes to interprate comma separated list of ids

本文关键字:插入 分隔 列表 ID 路由 何修改 js 修改      更新时间:2023-09-26

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

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

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

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

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

思潮?

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

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

编辑

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

编辑除非您只是将这些路由定向到索引/查找路由。您可以将蓝图路由用于其他所有内容,但在 url 的"键"部分中带有逗号的路由。