我有以下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设计中)更有意义。

09-13 03:53