2

我开始学习 Node.js(使用 Express.js)和 React.js。所以我有一些关于 Express Router 的问题

让我们看看我的部分代码

服务器.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 路由器会看到状态是否:id正确?

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

谢谢你。

4

1 回答 1

0

Express 按时间顺序匹配路线。

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

如果你想同时"/user/:id"工作"/user/status",你必须先在代码中声明后一个,然后再声明第一个。

于 2019-08-08T06:34:38.753 回答