我有以下REST API可以在快速申请中获得订单http://localhost:2000/api/orders/chemists?orderBy=date&startDate=date1&endDate=date2
http://localhost:2000/api/orders/chemists?orderBy=chemist&startDate=date1&endDate=date2
我的查询如下...
router.get("/chemists?orderBy=date", ...)
router.get("/chemists?orderBy=chemist", ...)
当我用邮递员进行查询时,执行的是顶部的而不是底部的?关于如何使用REST API进行结构化的任何建议。谢谢。
最佳答案
您不会使用Express将查询字符串放入路由定义中。如果要保留该URL结构,则需要一个路由处理程序,并根据if
中的值使用req.query
:
router.get("/chemists", (req, res) => {
if (req.query.orderBy === "date") {
// handle /chemists?orderBy=date
} else if (req.query.orderBy === "chemist") {
// /chemists?orderBy=chemist
} else {
// handle neither chemist or date specified
}
});
如果您确实确实希望在Express中为其提供单独的路由,则必须将URL设计更改为以下内容:
/chemists/date
/chemists/person
然后,您可以为它们分别声明一条单独的路线。由于此排序顺序实际上只是请求的属性(无论哪种方式都请求相同的资源),因此使其成为具有一个路由的查询字符串中的第一个选项(在REST设计中)更有意义。