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

express 路由匹配和数据获取的更多相关文章

  1. Express 路由

    路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [ ...

  2. (三)、Express 路由、静态文件、

    一.路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问. 每一个路由都可以有一个或者多个 ...

  3. node环境下express路由,

    1.基本路由概念 路由是指确定应用程序如何响应对特定端点的客户端请求,该请求是URI(或路径)和特定HTTP请求方法(GET,POST等). 每个路由都可以有一个或多个处理函数,这些函数在路由匹配时执 ...

  4. 第二百六十四节,Tornado框架-基于正则的动态路由映射分页数据获取计算

    Tornado框架-基于正则的动态路由映射分页数据获取计算 分页基本显示数据 第一步.设置正则路由映射配置,(r"/index/(?P<page>\d*)", inde ...

  5. NodeJS基础之Express路由和中间件

    路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.method(path, [ ...

  6. Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径

    Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...

  7. MVC源码分析 - 路由匹配

    上一篇 说到了路由事件注册以及路由表的生成, 前面 也解析到了, 管道事件的建立, 那么接下来, 肯定就是要调用执行这些事件了, 这些就不表了, 我已经得到我想要的部分了, 接下来, 在执行这些管道事 ...

  8. VS2013和VS2015中MVC 区域路由匹配顺序相反

    创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改Rou ...

  9. Vue-Router动态路由匹配

    //重点在于路由出口 <p> <!-- 使用 router-link 组件来导航. --> <!-- 通过传入 `to` 属性指定链接. --> <!-- & ...

随机推荐

  1. 如何用Git上传项目到GitHub

    1.登录gitHub,进入主页面,点击"+"号,建立新仓库. 2. 输入自己的仓库名,和简单的描述,根据自己设置为公开的或私有的. 我输入的是仓库名为ESMS. 勾选此选项,rea ...

  2. docker-01

    Docker介绍 1 什么是容器? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移 ...

  3. Vue系列-01-基础语法

    vue.js文件 # https://blog-static.cnblogs.com/files/lichengguo/vue.js # 下载该文件,保存的路径为代码同级目录 js/vue.js 文件 ...

  4. HCNA Routing&Switching之访问控制列表ACL

    前文我们了解了DHCP服务相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15147870.html:今天我们来聊一聊访问控制列表ACL: ACL(ac ...

  5. Adaptive AUTOSAR 学习笔记 15 - 持久化 Persistency

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

  6. Python 读写文件的正确方式

    当你用 Python 写程序时,不论是简单的脚本,还是复杂的大型项目,其中最常见的操作就是读写文件.不管是简单的文本文件.繁杂的日志文件,还是分析图片等媒体文件中的字节数据,都需要用到 Python ...

  7. vue中v-show和v-if在显示和隐藏元素上的区别

    v-show将元素隐藏是在dom节点上加style='display:none' v-if是直接将元素完全去掉 拿v-show示例,(v-if 也是一样,把下面的代码中v-show替换成v-if即可运 ...

  8. Redis5.0 配置文件中文参考

    Redis 5.0 配置文件#是否在后台执行,yes:后台运行:no:不是后台运行daemonize yes#是否开启保护模式,默认开启.要是配置里没有指定bind和密码.开启该参数后,redis只会 ...

  9. 使用git下载码云仓库文件步骤总结

    从码云下载文件的两种方式(私服时) 1.让私服管理者复制链接,然后你加入私服: 2.生成公钥,让私服管理者添加你的公钥. 在eclipse中找到git,输入自己的登录账号和密码,下载文件到本地仓库,然 ...

  10. WPF---数据模板(一)

    一.场景模拟 假设我们现在有如下需求: 我们需要在ListBox中的每个Item中显示某个成员的姓名.年龄以及喜欢的颜色,点击Item的时候,会在右边显示详细信息,同时也想让ListBox的样式变得好 ...