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请求都能分别匹配到路由

最新文章

  1. 【干货分享】前端面试知识点锦集04(Others篇)——附答案
  2. dex文件格式一
  3. 部署Redis for Windows服务
  4. View (三) 视图绘制流程完全解析
  5. 移植u-boot-1.1.6(原创)
  6. MySQL中CASE的使用
  7. imgAreaSelect 中文文档
  8. Django之权限
  9. Oracle程序备份
  10. selenium在scrapy中的使用、UA池、IP池的构建
  11. CMDB-实例
  12. 近5年常考Java面试题及答案整理(三)
  13. live555峰哥的私房菜(二)-----计划任务(TaskScheduler)探讨
  14. poj 2676 如何填满九宫格
  15. Codeforces round 1111
  16. Java基础系列篇:JAVA多线程 并发编程
  17. arcgis创建渔网
  18. 2018-2019-2 20162318《网络对抗技术》Exp3 免杀原理与实践
  19. spring mvc自定义数据转换
  20. [extjs] extjs 5.1 API 开发 文档

热门文章

  1. ACM学习笔记:可持久化线段树
  2. 【转】 C#中检查网络是否连通的二种方法
  3. SpringMVC之@ControllerAdvice
  4. 栈(Stack)
  5. tensorflow实现Word2vec
  6. NLP与深度学习(二)循环神经网络
  7. 网络流量预测入门(三)之LSTM预测网络流量
  8. OVN架构
  9. 真实机中安装CentOS
  10. Windows-MacOSX-Ubuntu·不同平台文件互传文件共享