Express.Route如何确定路线

时间:2019-08-08 06:11:58

标签: 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 " + 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的路线上移,它会按照我的预期行吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

  

Express按时间顺序匹配路线。

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

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