我开始学习Node.js(使用Express.js)和React.js。所以我对快速路由器有疑问
让我们看看我的部分代码
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
});
所以。我的问题是快递路线是如何确定要使用的方法的。
从我的示例代码中,如果我发送http://localhost:3000/api/user/status
这样的POST请求
快速路由器会看到状态为:id
对吗?
反之,如果我将/user/status
的路线上移,它会按照我的预期行吗?
谢谢。
答案 0 :(得分:0)
Express按时间顺序匹配路线。
Express开始将URL与脚本中声明的第一个路由进行匹配,如果不匹配,则移至下一个。这是因为Express是Javascript框架。您传递给路由的函数,即(req, res) => {...}
实际上是一个js回调函数,如果用户点击与声明的相应字符串匹配的路由,则会调用该回调函数。在Javascript中,首先为事件设置的回调被称为第一个,因为这些回调都保存在队列中。众所周知,队列是FIFO。
如果您想同时使用"/user/:id"
和"/user/status"
,则必须先在代码中声明后一个,然后再声明第一个。