express配置路由只需要通過app.method(url,func)來配置,其中url配置和其中的引數獲取方法不同

  • 直接寫全路徑

    路由中允許存在.

  • get請求傳入的引數

    router.get("/home", (req, res) => {
    res.status(200).send(req.query);
    });

    通過/home?a=1會收到物件:{a:1}

  • post請求傳入的引數

    app.use(express.json());
    router.post("/about", (req, res) => {
    res.status(200).send(req.body);
    });
  • 加上:XX匹配,如下

    router.get("/home/:id", (req, res) => {
    res.status(200).send(req.params.id);
    });

    如果有兩個相同的命名,後面的會覆蓋前面的,如

    router.get("/a/:id/b/:id", (req, res) => {
    res.status(200).send(req.params);
    });

    /a/123/b/456會得到{id:456}

    這種匹配還能通過. -兩種符號來拆分匹配,如

    router.get("/:id-:name/:pwd.:end", (req, res) => {
    res.status(200).send(req.params);
    });

    /a-bb/123.0會得到{"id":"a","name":"bb","pwd":"123","end":"0"}

  • 通過正則表示式,如下

    router.get("/a+|bb/", (req, res) => {
    res.status(200).send("include a");
    });

    該路由收到/aaa /bb都會返回

    在這裡*與正則的不同 相當於.* 應該用{0,}來代替*

    .會被判斷為字元所以不能用來匹配

  • 在需要多個正則匹配路徑,要先命名,並且正則一定要寫在括號內,如下

    router.get("/:name(aaa|bbb)/:id(\\d+)/other", (req, res) => {
    res.status(200).send(req.params);
    });

    http://localhost:3000/aaa/99/other能得到結果{"name":"aaa","id":"99"}

  • 直接寫正則

    只需要路徑能匹配上正則就行,同時因為是整個路徑匹配,所以不要用^來判斷前置字元

    router.get(/aa/, (req, res) => {
    res.status(200).send("get /a/");
    });

    以上路由能用/aa /a/b/c/aabv/s來匹配

  • 同一個路由用不同方法響應可以用route來鏈式響應,如

    router
    .route("/a")
    .get((req, res) => {
    res.status(200).send("get");
    })
    .post((req, res) => {
    res.status(200).send("post");
    });

    現在get post請求都能分別匹配到路由