express.route如何确定路线

How express.route determined route

我开始学习 Node.js(使用 Express.js)和 React.js。所以我对 Express Router

有一些疑问

让我们看看我的部分代码

server.js

const app = express();
const apiRouter = require("./Routes/apiRoute");

app.use("/api", apiRouter);

app.listen(3000, () => {
  console.log("application run on port " + 3000);
});

/Routes/apiRoute.js

const express = require("express");
const router = express.Router();

router.route("/user/:id")
    .post((req,res)=>{
        // Do something
    })



router.route("/user/status")
    .post((req,res) => {
        // do something
    });

所以。我的问题是快速路线如何确定采用哪种方法。

根据我的示例代码,如果我发送 POST 这样的请求 http://localhost:3000/api/user/status

express router 会看到状态是 :id 对吗?

另一方面,如果我向上移动 /user/status 的路线,它会按照我的预期进行,对吗?

谢谢。

Express matches route in chronological order.

Express 开始匹配URL 与脚本中声明的第一个路由,如果不匹配则移动到下一个。这是因为 Express 是一个 Javascript 框架。您传递给路由的函数,即 (req, res) => {...} 实际上是一个 js 回调函数,如果用户点击匹配声明的相应字符串的路由,该函数将被调用。而在Javascript中,首先调用为事件设置的回调,因为这些回调是在队列中维护的。众所周知,队列是 FIFO。

如果您希望 "/user/:id""/user/status" 都起作用,您必须在代码中先声明后一个,然后再声明第一个。