当前位置: 首页 > news >正文

Express中间件

1.创建最基本的中间件

const express = require('express');
const send = require('send');const app = express()const mw = function (req, res, next) {console.log('middleware');// 一定要调用next()  把流转关系交给下一个中间件或路由next()
}app.listen(80, () => {console.log('express server running at ');})

2.全局生效的中间件

客户端发起的任何请求,到达服务器之后,都会触发的中间件

const express = require('express');
const send = require('send');const app = express()const mw = (req, res, next) => {console.log('middleware');// 一定要调用next()  把流转关系交给下一个中间件或路由next()
}// 将mw注册为全局生效的中间件
app.use(mw)app.get('/', (req, res) => {res.send('Home Page')
})app.get('/user', (req, res) => {res.send('User Page')
})
app.listen(80, () => {console.log('express server running at ');})

3.局部生效的中间件

const express = require('express');
const send = require('send');const app = express()const mw1 = (req, res, next) => {console.log('mw1');next()
}// 局部生效
app.get('/', mw1, (req, res) => {res.send('Home Page')
})app.get('/user', (req, res) => {res.send('User Page')
})
app.listen(80, () => {console.log('express server running at ');})

多个局部生效的中间件

const express = require('express');
const send = require('send');const app = express()const mw1 = (req, res, next) => {console.log('mw1');next()
}
const mw2 = (req, res, next) => {console.log('mw2');next()
}
// 局部生效
// app.get('/', [mw1,mw2], (req, res) => {  也行
app.get('/', mw1,mw2, (req, res) => {res.send('Home Page')
})app.get('/user', (req, res) => {res.send('User Page')
})
app.listen(80, () => {console.log('express server running at ');})

4.中间件的作用

 

 5.中间件注意事项

中间件必须在路由之前注册

 

6.中间件分类

  • 应用中间件
  • 路由中间件
  • 错误级别中间件

             错误级别中间件必须在所有路由之后

  • 内置中间件

举例:express.json()

const express = require('express');
const send = require('send');
const app = express()// 配置解析表单数据的中间件
app.use(express.json())app.get('/', (req, res) => {console.log(req.header, req.body);res.send('User Page')
})
app.listen(80, () => {console.log('express server running at ');})

7.自定义中间件

08.中间件-自定义中间件_哔哩哔哩_bilibili

相关文章:

Express中间件

1.创建最基本的中间件 const express require(express); const send require(send);const app express()const mw function (req, res, next) {console.log(middleware);// 一定要调用next() 把流转关系交给下一个中间件或路由next() }app.listen(80, () > {console.l…...

124. 二叉树中的最大路径和

题目描述 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &…...

管理类联考——逻辑——论证逻辑——汇总篇——真题和典例——分析

分析 分析争论焦点题 199-2010-1-51——分析争论焦点题——论点争论模型 陈先生:未经许可侵入别人的电脑,就好像开偷来的汽车撞伤了人,这些都是犯罪行为。但后者性质更严重,因为它既侵占了有形财产,又造成了人身伤害…...

深度ip转换器:一键更换ip地址方法

很多网友问小编有关深度ip转换器怎么用?最新深度ip转换器手机版app?下面小编整理了深度ip转换器怎么修改ip地址的技巧和诀窍, 让我们来详细的了解一下深度id转换器, 一、深度ip转换器怎么用 1.深度ip转换器怎么用,深度…...

【TypeScript】类型断言-类型的声明和转换(五)

【TypeScript】类型断言-类型的声明和转换(五) 【TypeScript】类型断言-类型的声明和转换(五)一、简介二、断言形式2.1 尖括号语法2.2 as形式 三、断言类型3.1 非空断言3.2 肯定断言-肯定化保证赋值3.3 将任何类型断言为any3.4 调…...

行业追踪,2023-08-10

自动复盘 2023-08-10 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...

Nodejs下动态加载文件夹下的文件模块

个人博客 Nodejs下动态加载文件夹下的文件模块 个人博客,求关注,如果有不够清晰的,麻烦指出来,如果有很不正确的,多谢批评。 文章概叙 本文应用的场景是读取指定文件夹下面的所有文件,然后做操作&#…...

C#实现旋转图片验证码

开发环境:C#,VS2019,.NET Core 3.1,ASP.NET Core 1、建立一个验证码控制器 新建两个方法Create和Check,Create用于创建验证码(返回1张图片和令牌),Check用于验证(验证图…...

MySQL—缓存

目录标题 为什么要有Buffer Poolbuffer pool有多大buffer pool缓存什么 如何管理Buffer Pool如何管理空闲页如何管理脏页如何提高缓存命中率预读失效buffer pool污染 脏页什么时候会被刷入到磁盘 为什么要有Buffer Pool 虽然说MySQL的数据是存储在磁盘中,但是也不能…...

IP提取器对比器

需求: 一个html 页面 ,有两个输入框 第一个输入框输入文本中包含多个ip,输入的ip是不规则的,需要使用正则表达式提取出 输入文本的ip地址 , 然后在第二个输入框中输入内容,并提取出内容的ip ,如…...

【Spring Boot】构建RESTful服务 — RESTful简介

RESTful简介 本节将从基础的概念开始介绍什么是RESTful、RESTful的特点、RESTful中的资源、HTTP Method、HTTP Status,还将介绍RESTful和SOAP到底有哪些区别。 1.什么是RESTful RESTful是目前流行的互联网软件服务架构设计风格。REST(Representationa…...

模仿火星科技 基于cesium+水平面积测量+可编辑

​ 当您进入Cesium的编辑水平积测量世界,下面是一个详细的操作过程,帮助您顺利使用这些功能: 1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。 在屏幕的一角,一个友好的提…...

26.配电网规划——考虑潮流约束的配电网规划

MATLAB代码直达:26.多时段-考虑潮流约束的配电网规划 clc;clear;close all; %% 导入数据 load(data.mat); MGpowerxlsread(MG1-3.xlsx); % 微电网的日负荷曲线 nt3 ; % 变压所个数 Sn25; % 变电所容量 MVA G…...

【云原生】K8S集群

目录 一、调度约束1.1 POT的创建过程1.1调度过程 二、指定节点调度2.1 通过标签选择节点 三、亲和性3.1requiredDuringSchedulingIgnoredDuringExecution:硬策略3.1 preferredDuringSchedulingIgnoredDuringExecution:软策略3.3Pod亲和性与反亲和性3.4使…...

python接口自动化之自动发送测试报告邮件

前言 ​ SMTP(Simple Mail Transfer Protocol)也就是简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。python的smtplib模块就提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装。 ​ python发邮件主…...

umi出现“Cannot find module ‘umi-build-dev/lib/routes‘“ 错误

确认安装的 Umi 版本是否正确:首先,检查项目中 package.json 文件中的 umi 的版本号是否正确,确保版本号与项目所需的版本一致。清除缓存并重新安装依赖:可以尝试使用以下命令清除 npm 缓存并重新安装依赖: npm cache …...

Redis类型检查与命令多态

Redis中用于操作键的命令基本上可以分为两种类型。 其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令 、RENAME命令、TYPE命令、OBJECT命令等。 举个例子,以下代码就展示了使用DEL命令来删除三种不同类型的键: # 字符串键 redis> SE…...

mysql支持的xa具体指的是什么?

在MySQL中,XA指的是一种事务协议(eXtended Architecture),用于支持分布式事务。XA协议允许应用程序跨多个独立的数据库资源(例如多个MySQL实例)执行分布式事务。 具体来说,XA协议提供了以下关键…...

IntelliJ Idea 编译时控制台上中文输出乱码

猜测原因是IDEA启动时未指定编码信息,故与系统编码保持一致(windows中文系统默认为GBK编码),当以UTF-8编码进行编译在控制台会以GBK编码输出,从而导致乱码 解决方案 指定Idea启动时JVM的默认编码为UTF-8 Help -> Edit Custom Options P…...

锚框【目标检测】

生成多个锚框 假设输入图像高为h,宽为w,我们以图像每个像素为中心生成不同形状的锚框,缩放比 s∈(0,1],宽高比为r>0。那么锚框的宽度和高度分别为和。当中心位置给定时, 已知宽和高的锚框是确定的。缩放比为锚框高与图像高的比值,然后得到一个正方形锚框面积。 ​​…...

一文学习 工作流开发 BPMN、 Flowable俗

一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...

Piggy_Packages V2026.1 帮助文档(九)模式评估

获取Piggy_Packages 还没有Piggy_Packages的同学,请参考这篇帖子获取: Piggy_Packages V2026.1 帮助文档(一)开箱即用 模型评估工具(MET)是一种常用的对WRF预报结果进行评估的工具。今天我们来学习一项它…...

大模型工程化成熟度测评指南(SITS2026官方适配版):12项指标自评表+3个高危信号预警+1次免费基准评估入口

第一章:SITS2026发布:大模型工程化成熟度模型 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Software Intelligence & Trustworthiness Scale 2026)是首个面向大模型全生命周期的工程化成熟度评估框架&#xff0c…...

重新思考背景移除:BackgroundRemover如何改变游戏规则

重新思考背景移除:BackgroundRemover如何改变游戏规则 【免费下载链接】backgroundremover Background Remover lets you Remove Background from images and video using AI with a simple command line interface that is free and open source. 项目地址: http…...

LTspice FFT 仿真实战:从基础操作到高级参数调优

1. LTspice FFT功能入门指南 第一次接触LTspice的FFT功能时,我完全被那些频谱图搞懵了。后来才发现,这其实是电路仿真中最实用的分析工具之一。简单来说,FFT(快速傅里叶变换)就像给电路信号做"体检"&#xf…...

OpenClaw从入门到应用——频道:Signal

通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》 Quick setup (beginner) 为机器人使用一个独立的 Signal 号码(推荐)。安装 signal-cli(如果使用 JVM 构建版,需要 J…...

FUTURE POLICE语音模型企业级架构设计:高可用与弹性伸缩方案

FUTURE POLICE语音模型企业级架构设计:高可用与弹性伸缩方案 最近和几个做智能客服和有声书的朋友聊天,大家普遍有个头疼的问题:语音合成服务一到业务高峰期就容易卡顿,甚至直接挂掉。平时用着还行,一到促销活动或者内…...

TypeScript 中函数类型的定义与应用

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

FPGA双边滤波实战:如何用查找表(LUT)和流水线设计搞定实时图像去噪

FPGA双边滤波实战:如何用查找表(LUT)和流水线设计搞定实时图像去噪 在嵌入式视觉系统中,实时图像处理一直是开发者面临的核心挑战之一。无论是无人机避障、工业质检还是医疗内窥镜,对1080p60fps视频流的实时去噪需求日…...

Win11Debloat终极指南:三步释放Windows 11隐藏性能的完整解决方案

Win11Debloat终极指南:三步释放Windows 11隐藏性能的完整解决方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...