express 路由匹配和数据获取

express配置路由只需要通过app.method(url,func)来配置,其中url配置和其中的参数获取方法不同

直接写全路径

路由中允许存在.

get请求传入的参数

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

通过/home?a=1会收到对象:{a:1}

post请求传入的参数

bash 复制代码
app.use(express.json());
router.post("/about", (req, res) => {
    res.status(200).send(req.body);
});

加上:XX匹配,如下

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

如果有两个相同的命名,后面的会覆盖前面的,如

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

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

这种匹配还能通过. -两种符号来拆分匹配,如

bash 复制代码
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"}

通过正则表达式,如下

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

该路由收到/aaa /bb都会返回

在这里与正则的不同 相当于. 应该用{0,}来代替*

而.会被判断为字符所以不能用来匹配

在需要多个正则匹配路径,要先命名,并且正则一定要写在括号内,如下

bash 复制代码
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"}

直接写正则

只需要路径能匹配上正则就行,同时因为是整个路径匹配,所以不要用^来判断前置字符

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

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

同一个路由用不同方法响应可以用route来链式响应,如

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

现在get post请求都能分别匹配到路由

相关推荐
毕业设计7032 天前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
Wx-bishekaifayuan3 天前
springboot桂味美食分享系统40540-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Wx-bishekaifayuan5 天前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
Wx-bishekaifayuan5 天前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Wx-bishekaifayuan5 天前
springboot公考微信小程序35511-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Wx-bishekaifayuan6 天前
springboot线上中医药养生平台管理系统36753-计算机课程设计、毕业设计
java·spring boot·后端·spring·课程设计·express·旅游
Wx-bishekaifayuan6 天前
springboot大学生就业平台47691-计算机课程设计、毕业设计
java·spring boot·后端·elasticsearch·课程设计·express·旅游
FYKJ_20109 天前
express绿叶横店短剧推荐与影评分享平台34219-计算机课程设计、毕业设计
java·javascript·vue.js·spring boot·后端·课程设计·express
vx_Biye_Design12 天前
springboot小区管理系统68491-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
星光开发者12 天前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express