Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript express.route如何确定路线_Javascript_Node.js_Express_Express Router - Fatal编程技术网

Javascript express.route如何确定路线

Javascript express.route如何确定路线,javascript,node.js,express,express-router,Javascript,Node.js,Express,Express Router,我开始学习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 " + 300

我开始学习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);
});
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
    });
/Routes/apiRoute.js

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

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

app.listen(3000, () => {
  console.log("application run on port " + 3000);
});
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

快速路由器将看到状态为
:id
对吗

另一方面,如果我将
/user/status
的路径向上移动,它将按照我的预期运行,对吗

多谢各位

Express按时间顺序匹配路线

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


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

路由匹配从上到下或从前到后运行,即第一个匹配的URL将起作用,搜索URL将停止。所以你可以把/status-URL带到上面