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

expressjs 的app.use,怎么使用?

在Express.js中,app.use() 是一个非常重要的函数,它用于在Express应用中注册中间件函数。中间件函数是一个可以访问请求对象(req)、响应对象(res)和请求/响应循环中的应用程序请求-响应周期中的下一个中间件函数的函数。app.use() 允许你执行代码、修改请求和响应对象、结束请求-响应循环,以及调用堆栈中的下一个中间件。

基本用法

app.use([path,] callback [, callback...])

  • path 是可选的。当提供时,中间件仅对匹配该路径的请求有效。如果没有提供路径,则中间件将对所有请求有效。
  • callback 是要调用的中间件函数。可以指定多个中间件函数,这些函数将按照它们被添加的顺序依次执行。

示例

对所有请求使用中间件
const express = require('express');
const app = express();// 一个简单的中间件函数,它将每个请求的URL打印到控制台
app.use((req, res, next) => {console.log(req.url);next(); // 不要忘记调用next()来传递控制权给下一个中间件
});app.get('/', (req, res) => {res.send('Hello World!');
});app.listen(3000, () => {console.log('App listening on port 3000!');
});
对特定路径使用中间件
app.use('/user', (req, res, next) => {console.log('Checking user routes...');next();
});app.get('/user', (req, res) => {res.send('User Home Page');
});app.get('/user/profile', (req, res) => {res.send('User Profile Page');
});

在这个例子中,/user/user/profile 路由都会执行 /user 路径下定义的中间件函数。

挂载中间件

app.use() 也可以用来挂载整个Express应用作为中间件,这在创建子路由或API版本控制时非常有用。

const express = require('express');
const router = express.Router();// 定义一些路由
router.get('/', function(req, res) {res.send('Birds home page');
});
router.get('/about', function(req, res) {res.send('About birds');
});// 在主应用中使用路由中间件
app.use('/birds', router);

在这个例子中,/birds/birds/about 路由会分别由 router 变量中定义的中间件函数处理。

注意事项

  • 确保调用 next() 来传递控制权给下一个中间件,除非你已经结束了请求-响应循环(例如,通过发送HTTP响应)。
  • 中间件可以按任意顺序堆叠,但它们会按照添加到应用的顺序执行。
  • 你可以使用多个中间件函数来处理同一个请求,这允许你进行复杂的请求处理逻辑。

http://www.mrgr.cn/news/31775.html

相关文章:

  • 一、HTML
  • Linux---常用shell脚本
  • PG数据库 数据库时间字段 开始时间和结束时间,判断和查询条件的开始和截止时间存在交集,SQL如何编写
  • 前端系统设计面试题(二)Javascript\Vue
  • 实用且免费的 IP 地域查询 API 接口推荐
  • 通过vmware虚拟机安装和调试编译好的 ReactOS
  • 数据类型转换中存在的问题分析
  • armbian debian 系统安装overlayroot后无法启用
  • Java+Spring Cloud +UniApp 智慧工地源码,用户PC端、移动端数据同步,支持多端展示
  • Windows本地连接远程服务器并创建新用户详细记录
  • 【论文笔记】BEVNeXt: Reviving Dense BEV Frameworks for 3D Object Detection
  • TMS320F28335的定时器中断实验
  • 数据结构-顺序表
  • Linux常用命令(部分学习待继续补充)
  • (undone) 声音信号处理基础知识(2)
  • 【免杀】CS免杀——ps1免杀
  • 继承和多态
  • 聊聊通过阅读书籍类型来判断人
  • 【算法——二分查找】
  • 500元以内头戴式耳机哪款好?盘点500元以内百元宝藏品牌机型推荐
  • 系统架构设计师 - 案例特训专题 - 软件工程篇
  • Leetcode Hot 100刷题记录 -Day18(反转链表)
  • MongoDB在Linux系统中的安装与配置指南
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述
  • sourceTree使用脚本一键push代码到gerrit
  • Python使用总结之FastAPI高级功能探索:数据库集成与依赖注入