十、Express 路由

news2024/10/6 22:32:03

         路由是Express框架中最重要的功能之一,在Express中,路由指的是客户端的请求与服务器处理函数之间的映射关系,Express中的路由分别由请求的类型(GET/POST等)、请求的URL地址和处理函数三个部分组成的;

APP级别路由

路由的语法格式如下:

app.Method(path,handler);    // Method可以是get,post,put,delete等

        在上一篇当中就已经使用过监听 GET/POST 请求当中就使用过创建字符串形式路由路径匹配app路由;进行一下简单的回顾:

app.get('/',function(req,res){ })         // 路由匹配 /root
app.get('/user',function(req,res){})      // 路由匹配 /user

字符串模板的路由路径匹配app路由:

stu?book中的 ? 表示至多一个,可以是 /stbook 或 /stubook 都可以匹配到;

app.get('/stu?book',function(req,res){
    res.send('对学生开发的书籍');
})

stu+book中的 + 表示至少一个,可以是 /stuubook 或 /stuuuuubook (u最少一个);

app.get('/stubook',function(req,res){res.send('对学生开发的书籍');})
app.get('/stuubook',function(req,res){res.send('对学生开发的书籍');})
app.get('/stuuubook',function(req,res){res.send('对学生开发的书籍');})

 stu*book中的 * 表示stu和book之间可以有任意的字符;

stu(dent)?book 表示可以有括号内的字符也可以没有,如 /stubook 或 /studentbook 均可;


路由参数的路由路径:

        路由参数用来获取路由路径的值,该值会赋给req.params ;(路径参数必须由大小写字母,数字和下划线组成);

app.get('/stu/:s_Id/books/:b_Id',function(req,res){
    res.send(req.params);
})


不同请求方式的app路由:

GET请求 :

app.get('/',function(){
    res.send('GET');
})

POST请求:

app.post('/',function(req,res){
    res.send('POST');
})

ALL —— 任意http请求:

app.all('/',function(req,res){
    res.send('ALL');
})

        除了以上的这些还有以数组的形式或以组合形式的方式执行函数的app路由,其中需要带next参数,用于传递中间件的控制权,有的花会在中间的部分提及;app路由的内容就到此!


Router 级别路由

        上面的内容就是app路由,创建路由都是在项目的入口文件(app.js)中操作的,那么在实际开发中,这样的集中路由不利于开发维护,所以同样的需要进行模块化的管理,也就需要模块化的路由; 

        使用express生成项目中有一个routes文件夹,routes文件夹用于存放所有模块化路由文件,默认的有两个:index.js 和 users.js ;下面来进行建立router级别路由。

1. 创建路由模块对应的 .js 文件,使用express.Router() 方法创建可挂载的模块化路由;

// /routes/index.js文件
const express = require('express');
const router = express.Router();

2. 向路由上挂载具体的路由;

router.get('/user',function(req,res){
    res.send('user: admin');
})

3. 使用 module.exports 向外共享路由对象;

module.exports = router;

4. 注册路由模块;

// 入口文件app.js文件
var indexRouter = require('./routes/index');
app.use('/',indexRouter);

补充说明:可添加路由访问前缀 app.use('/路由访问前缀',indexRouter);

5. 测试运行;

         以上就是模块化路由的内容,在实际开发中对于不同的模块化内容当中可以将内容编写在各个.js文件中,然后将要使用的路由进行挂载向外共享注册使用比起使用app.js入口文件创建路由的方式是很不错的选择!Express 路由的内容就到此结束了,感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】侯捷C++面向对象高级编程(下)

转换函数(conversion function) 可以把"这种"东西,转化为"别种"东西。 即Fraction ——> double class Fraction { public:Fraction(int num, int den 1) :m_numerator(num), m_denominator(den) {}operator double()const {return ((dou…

hashmap哈希map是什么?什么时候需要使用hashmap?C实现hashmap示例

背景 对于C程序员,尤其是嵌入式C程序员,hashmap使用的相对较少,所以会略显陌生,hashmap其实涉及到2个概念,分别是哈希(hash)、map。 哈希hash:是把任意长度输入通过蓝列算法变换成固定长度的输出&#xff…

CSS Flex 布局的 flex-direction 属性讲解

flex-direction 设置了主轴,从而定义了弹性项目放置在弹性容器中的方向。 Flexbox 是一种单向布局概念,可将弹性项目视为主要以水平行或垂直列布局。 .container {flex-direction: row | row-reverse | column | column-reverse; }几种支持的属性&#x…

devServer和VueCli | Webpack

文章目录devServer和VueCliwebpack-dev-servercontentBase模块热替换开启HMRhotOnly host配置port open compressproxyresolveextensions和alias配置如何区分开发环境devServer和VueCli webpack-dev-server contentBase 模块热替换 开启HMR hotOnly host配置 port open compres…

IMX6ULL学习笔记(15)——GPIO接口使用【官方SDK方式】

一、GPIO简介 i.MX6ULL 芯片的 GPIO 被分成 5 组,并且每组 GPIO 的数量不尽相同,例如 GPIO1 拥有 32 个引脚, GPIO2 拥有 22 个引脚, 其他 GPIO 分组的数量以及每个 GPIO 的功能请参考 《i.MX 6UltraLite Applications Processor Reference M…

有没有股票实时行情的同花顺l2接口?

对于个人投资者而言,一般看盘平台软件系统中,通过自定义公式接口,可以获取到股票实时行情的。例如同花顺l2接口系统会通过一些输入的公式就能查找指定的股票行情了,那么这个就相当于股票实时行情的API接口一样的道理,输…

加密解决HTTP协议带来的安全问题

HTTP协议默认是采取明文传输的,容易被中间人窃听、拦截、篡改,存在安全隐患。 常见提高安全性的方法是对通信内容进行加密,再进行传输,常见的加密方式有 不可逆加密:单向散列函数 可逆加密:对称加密、非对称…

从模型到服务——iDesktopX处理自动化工具实现BIM模型到三维服务发布

目录前言一、 处理自动化模型二、 算子参数设置1、 使用迭代数据集打开导出后的BIM模型2、 移除重复点、重复面和重复子对象3、 模型生成缓存4、 三维切片缓存发布5、 执行结果前言 BIM模型在SuperMap实际使用的业务流程中常常需要在桌面产品中生成缓存,然后通过iS…

安装和配置MySQL

首先前往官网下载mysql社区版(不要钱) MySQL Community Serverhttps://dev.mysql.com/downloads/windows/installer/8.0.html 甲骨文比较鸡贼,会要求你注册一个账号。但是下面有一行小字,直接点击下载就好了 双击后直接按…

Blender——苹果的纹理绘制

效果图 前言 在进行纹理绘制之前,首先要具有苹果三维模型。 关于苹果的建模请参考:Blender——“苹果”建模_行秋的博客 1.苹果UV的展开 1.1首先点击UV Eidting,滑动三维模型,使其大小适中。 1.2打开左上角的UV选区同步&#x…

使用idb操作IndexedDB

使用idb操作IndexedDB 译自:https://www.hackernoon.tech/use-indexeddb-with-idb-a-1kb-library-that-makes-it-easy-8p1f3yqq GitHub地址:https://github.com/jakearchibald/idb 文章目录使用idb操作IndexedDB前置条件本文承诺上手demo1:…

python中的encode()和decode()函数

前言: 我们知道,计算机是以二进制为单位的,也就是说计算机只识别0和1,也就是我们平时在电脑上看到的文字,只有先变成0和1,计算机才会识别它的意思。这种数据和二进制的转换规则就是编码。计算机的发展中,有…

【SpringCloud Alibaba】Sentinel流控规则

概念 流控规则 直接(默认) QPS快速失败 线程数直接控制 QPSWarming up QPS排队等待 关联 链路 具体启动Sentinel的步骤可以参考我的上一篇文章。 概念 资源名:唯一名称,默认请求路径 针对来源:Sentinel可以针…

微服务系列之远程服务调用

随笔 对自己不满是任何有才能的人的根本特征 参考书籍: “凤凰架构”“微服务架构设计模式” 本篇文章开始之前提示一下,读者带着“IPC与RPC的有什么区别”疑惑读效果更好 引言 从架构师的角度来看,微服务架构的落地实现第一个需要解决问…

改良型新药之详细分类

随着一类新药开发越来越困难、仿制药竞争激烈,改良型新药被认为符合我国医药企业转型升级的方向,吸引了更多企业切入,本文也将针对改良型新药的6个常见共性问题给予解答,涉及科普、专利、分类、临床价值、立项、注册申请、数据统计…

windows@网络防火墙@软件联网控制

文章目录ref打开防火墙控制面板常用部分限制某个软件联网文档参考具体操作取消控制/禁用第三方软件控制ref (Windows) 创建出站端口规则 | Microsoft LearnWindows Defender Firewall with Advanced Security (Windows) | Microsoft Learn组策略 Windows) 高级安全性的 Window…

你可能不知道的DOM断点调试技巧

前言 作为一个前端,DOM断点应该是我们非常熟悉的,也是我们日常工作中经常要用到的一种调试技巧;但是下面这些DOM断点调试技巧你可能不知道,且听我一一道来。 监听元素 有这样一种场景,当DOM中某个元素移除或者元素属…

再学C语言14:基本运算符

C使用运算符(operator)代表算数运算 一、赋值运算符(assignment operator): 在C中,符号并不表示“相等”,而是一个赋值运算符 year 2022; 符号左边是一个变量名,右边是赋给该变…

arraybuffer的应用,下载图片/文件等

在这篇文章中,我们了解了js中arraybuffer是用来存储二进制缓存的,但是都是理论知识,本篇文章来介绍一个arraybuffer应用的场景。 主要应用场景是下载文件,在ajax请求中,设置responseType arraybuffer 得到一个二进制…

零刻 SEi12 Pro,ALL IN ONE搭建教程

一台mini的NUC能做什么?当然每个人的心里都会有着不同的答案,既然是一台Mini主机那就肯定少不了部署一个All-In-One来榨干他的性能。今天我就大家带来一个部署All-In-One的详细教程,希望能够对大家有帮助。 我这台机器配置是i5-1240P 16G内存…