express的使用:路由、中间件(二)
13.路由
1.express中的路由指客户端的请求与服务器处理函数间的映射关系
2.express中的路由由请求的类型,请求的URL地址,处理函数组成
3.app.METHOD(PATH,HANDLER)
4. 路由匹配顺序 a.按照定义的先后顺序进行匹配 b.请求类型和请求地址同时匹配成功才会调用相应的处理函数
14.模块化路由
1.创建路由模块对应的.js文件,
2.调用express.Router()函数创建路由对象
3.向路由对象上挂载具体的路由
4.使用module.exports向外共享路由对象
5.使用app.use()函数注册路由模块
15.app.use()函数的作用是全局注册中间件
16.路由模块添加前缀 app.use('/api',router)
17.中间件
a.对请求的预处理,本质是function处理函数。中间件函数的形参列表中,必须包含next参数,而路由函数中只包含res,req
b.next()函数是实现多个中间件连续调用的关键,他表示把流转关系转交给下一个中间件或者路由
c.全局中间件 app.use(rt) 、局部生效中间件(不适用app.use()定义的中间件)
d.中间件作用,共享一份req和res,基于这样的特性,我们可以在上游的中间件中,统一为req或res填加自定义的属性或者方法,供下游的中间件或路由进行使用
18.中间件使用注意事项
a.中间件要在路由之前定义
b.一个中间件可以有多个处理函数
c.执行中间件以后调用next()
d.为了防止代码混乱,next()函数后不写额外的代码
e.连续调用多个中间件时,多个中间件之间,共享req和res对象
19.中间件的分类
a.应用级别中间件(绑定到app.use())
b.路由级别中间件(绑定到express.Router())
c.错误级别中间件(必须有四个参数,(err,req,res,next),捕获错误,防止应用崩溃),需要注册在所有路由之后
e.express内置中间件(express.static、express.json、express.urlencodeed)
f.第三方中间件
20.自定义中间件,步骤:
a.定义中间件
b.监听req的data事件
c.监听req的end事件
d.使用querystring模块解析请求数据
e.将解析出来的数据对象挂载为req.body
f.将自定义的中间件封装为模块
express的使用:路由、中间件(二)的更多相关文章
- express 框架之 路由与中间件
1. 什么是router路径,什么是middleware? 我们输入www.baidu.com 来访问百度的主页,浏览器会自动转换为 http://www.baidu.com:80/(省略一些参数) ...
- express中的中间件(middleware)、自定义中间件、静态文件中间件、路由中间件
express文档地址 什么是中间件呢(middleware)?它是谁的中间件呢? 首先我们需要了解到请求和响应, 请求就是客户端发送请求给服务器, 响应就是,服务器根据客户端的请求返回给客户端的数据 ...
- express-18 路由
简介 路由是网站或Web服务中最重要的一个方面:路由是将请求(由URL和HTTP方法指定)路由到处理它们的代码去的一种机制. 路由过去是基于文件的,这很简单,但不灵活. IA 是指内容的概念性组织.在 ...
- 【原创】express3.4.8源码解析之路由中间件
前言 注意:旧文章转成markdown格式. 跟大家聊一个中间件,叫做路由中间件,它并非是connect中内置的中间件,而是在express中集成进去的. 显而易见,该中间件的用途就是 ------ ...
- express4.x 路由中间件
路由中间件必须通过app挂载到对应的路由上,如: var express = require('express'); var router = express.Router(); var app = ...
- express4.x中路由中间件和挂载路径的关系
express4.x 中一个路由中间件可以挂载到多个路由上,一个路由也可以绑定多个路由中间件,如: //多个路由匹配一个路由中间件 app.use(['/gre+t', '/hel{2}o'], gr ...
- ASP.NET Core路由中间件[1]: 终结点与URL的映射
目录 一.路由注册 二.设置内联约束 三.默认路由参数 四.特殊的路由参数 借助路由系统提供的请求URL模式与对应终结点(Endpoint)之间的映射关系,我们可以将具有相同URL模式的请求分发给应用 ...
- ASP.NET Core路由中间件[3]: 终结点(Endpoint)
到目前为止,ASP.NET Core提供了两种不同的路由解决方案.传统的路由系统以IRouter对象为核心,我们姑且将其称为IRouter路由.本章介绍的是最早发布于ASP.NET Core 2.2中 ...
- ASP.NET Core路由中间件[2]: 路由模式
一个Web应用本质上体现为一组终结点的集合.终结点则体现为一个暴露在网络中可供外界采用HTTP协议调用的服务,路由的作用就是建立一个请求URL模式与对应终结点之间的映射关系.借助这个映射关系,客户端可 ...
- 三十一、【WCF路由中间件】WCFHosting服务主机的路由器与负载均衡和实现思路
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baid ...
随机推荐
- mysql随机返回一条数据
select * from biz_question ORDER BY RAND(id) LIMIT 1; SELECT * FROM biz_question AS t1 JOIN (SELECT ...
- NVIDIA显卡安装
查看是否有gcc命令. 执行gcc -v 查看相关版本信息.一般完整安装是有此命令的.没有就要自行安装. yum -y install gcc gcc-c++ 修改文件vim /lib/mod ...
- apollo兼容mysql的时候报错Table 'apolloportaldb.hibernate_sequence' doesn't exist
解决方案: 配置文件里加: spring.jpa.properties.hibernate.hbm2ddl.auto=update
- 插入排序C语言
1 #include "stdio.h" 2 #include "stdlib.h" 3 typedef int ElemType; 4 //直接插入排序 5 ...
- 浅谈Atlassian产品搭建的敏捷管理体系(一)概述
准备把敏捷管理的专题在今年完成,主要谈一下Atlassian的实践,先做一下搬运工,讲去年写的两篇弄过来. Dream big, work smart, deliver fast 使用Atlassia ...
- 整合Junit5
1.引入依赖 <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-j ...
- ts的接口和泛型的基本语法
一.接口 1.接口定义 接口是一种规范的定义,它定义行为和规范,在程序设计中接口起到限制和规范的作用. 2.接口的声明与使用 //声明对象类型接口 interface Person { name: ...
- 【GNU/Linux, Debian】使用cups连接HP Laserjet 1012 HB打印机
woc我怎么第一版打的cpus Cups是个开源的打印软件,于2007年被苹果收购(包括作者负责人也被苹果雇佣),收购后任然使用GPL发行. 然而2021年年底,作为收购前负责人的他表示这个软件再也不 ...
- 并发多线程学习(三)Java多线程入门类和接口
1 Thread类和Runnable接口 上一章我们了解了操作系统中多线程的基本概念.那么在Java中,我们是如何使用多线程的呢? 首先,我们需要有一个"线程"类.JDK提供了Th ...
- 学习- vue 中 API $attr 用法
2.4.0新增 定义:包含了父作用域不作为 prop 被识别(且获取)的 attribute 绑定( class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的 ...