Express 路由器正则表达式问题

Express router regex issue

我在我的项目中使用 express router,我遇到了以下问题,

我有2条路线如下

router.get("/user/:id", (req, res) => {
  console.log("---- ABCD ---");
});

router.get("/user/list", (req, res) => {
  console.log("---- PQRS ---");
});

当我调用时,http://localhost:3000/user/list api,ABCD 打印在控制台而不是 PQRS 中。

我知道我们可以在路由器中编写正则表达式来处理这种情况。我尝试使用以下代码。

router.get("/user/:id(!list$)", (req, res) => {
   console.log("----- ABCD ----");
}

进行此更改后,/user/:id api 停止工作。但是 /user/list api 正在工作

如果我做错了什么,请告诉我。谢谢!

问题不在于正则表达式,而在于。重新排序您的路由定义,以便动态路由位于底部。见下方代码

router.get("/user/list", (req, res) => {
  console.log("---- PQRS ---");
});

router.get("/user/:id", (req, res) => {
  console.log("---- ABCD ---");
});