30天精通Nodejs--第十八天:express-中间件

2024-01-14 04:44

本文主要是介绍30天精通Nodejs--第十八天:express-中间件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 引言
  • 什么是Express中间件?
  • 中间件的执行流程
  • 中间件的分类
  • 常用中间件
  • 结语

引言

Express中间件作为其核心特性之一,为请求处理流程提供了极大的灵活性和可扩展性。本文将详细解读Express中间件的工作原理、使用方式以及实际应用中的高级技巧。

什么是Express中间件?

Express中间件本质上是JavaScript函数,它们位于客户端发起的HTTP请求与服务器生成响应之间,形成一个有序的执行链。
每个中间件都有机会对请求进行预处理、修改或终结请求-响应周期。

function middleware(req, res, next) {// 对req(请求对象)、res(响应对象)进行操作// 调用next()以传递控制权给下一个中间件
}// 绑定到Express应用
app.use(middleware);

其中req代表HTTP请求,包含了所有与请求相关的属性;res则用于构建HTTP响应;而next是一个回调函数,调用它会将控制权转移给后续的中间件。

中间件的执行流程

当一个请求到达Express服务器时,它会按照绑定顺序依次通过各个中间件。如果中间件执行了res.send()、res.json()、res.end()等方法结束响应,则该请求生命周期终止,不再继续传递到后面的中间件。若没有结束响应,则必须调用next()方法,否则请求会被挂起。
例如,下面是一组按序执行的中间件:

app.use((req, res, next) => {console.log('Middleware 1');next();
});app.use((req, res, next) => {console.log('Middleware 2');res.send('Hello from Middleware 2'); // 这里会结束响应
});app.use((req, res, next) => {console.log('Middleware 3'); // 如果请求未在Middleware 2中结束,这句会执行
});

中间件的分类

  1. 应用程序级中间件:直接绑定到app实例上的中间件,对所有路由都生效。
app.use(middlewareFunction);
  1. 路由级中间件:绑定到特定路由路径的中间件,只针对匹配该路径的请求生效。
app.get('/users', middlewareFunction, (req, res) => {
});
  1. 错误处理中间件:具有四个参数(err, req, res, next),专门用来捕获并处理在整个请求-响应生命周期中产生的错误。
app.use((err, req, res, next) => {console.error(err.stack);res.status(500).send('服务器异常!');
});

常用中间件

  1. 处理请求的body数据
    会把请求的body转换为json对象
app.use(express.json())
  1. 异常处理
    上面已经提到了,当服务器发生异常时会用到
app.use((err, req, res, next) => {console.error(err.stack);res.status(500).send('服务器异常!');
});
  1. 子路由中间件
    上篇文章中用到的子路由中间件
app.use('/api', router)

结语

Express中间件机制是其强大功能的核心所在,它允许开发者采用洋葱模型处理HTTP请求,使得业务逻辑能够解耦和复用,大大提高了开发效率和应用维护性。理解和掌握中间件的使用,对于构建高质量且易于扩展的Node.js Web服务至关重要。

Express 模块的更多用法可以查阅官方文档。

切记:多写代码。
在接下来的文章中,我们将继续深入探讨Node.js的各个方面。
大家有任何问题都可以在评论区留言交流,相互学习!

这篇关于30天精通Nodejs--第十八天:express-中间件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/603984

相关文章

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

Python3中Sanic中间件的使用

《Python3中Sanic中间件的使用》Sanic框架中的中间件是一种强大的工具,本文就来介绍Python3中Sanic中间件的使用,具有一定的参考价值,感兴趣的可以了解一下... 目录Sanic 中间件的工作流程中间件的使用1. 全局中间件2. 路由中间件3. 异常处理中间件4. 异步中间件5. 优先级

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

MySQL入门到精通

一、创建数据库 CREATE DATABASE 数据库名称; 如果数据库存在,则会提示报错。 二、选择数据库 USE 数据库名称; 三、创建数据表 CREATE TABLE 数据表名称; 四、MySQL数据类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串类型 4.1 数值类型 数值类型 类型大小用途INT4Bytes整数值FLOAT4By

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

【Python篇】PyQt5 超详细教程——由入门到精通(终篇)

文章目录 PyQt5超详细教程前言第9部分:菜单栏、工具栏与状态栏9.1 什么是菜单栏、工具栏和状态栏9.2 创建一个简单的菜单栏示例 1:创建带有菜单栏的应用程序代码详解: 9.3 创建工具栏示例 2:创建带有工具栏的应用程序代码详解: 9.4 创建状态栏示例 3:创建带有状态栏的应用程序代码详解: 9.5 菜单栏、工具栏与状态栏的结合示例 4:完整的应用程序界面代码详解: 9.6 总结

c++习题30-求10000以内N的阶乘

目录 一,题目  二,思路 三,代码    一,题目  描述 求10000以内n的阶乘。 输入描述 只有一行输入,整数n(0≤n≤10000)。 输出描述 一行,即n!的值。 用例输入 1  4 用例输出 1  24   二,思路 n    n!           0    1 1    1*1=1 2    1*2=2 3    2*3=6 4

nvm及nodejs安装相关

安装 1.清空文件夹,卸载nvm及nodejs 2.下载安装包 https://github.com/coreybutler/nvm-windows/releases (也下载有) 3.安装nvm 地址写D:/nvm和D:/nodejs 4.安装nodejs nvm ls available //查询版本nvm install 16.20.2 //安装对应版本号nvm use 1