马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目次
Node.js 中心件的分类与详细先容
1. 目次结构
2. Express 中心件的重要分类
3. 代码实现
1. 应用级中心件(作用于整个应用)
示例:日志记录中心件
2. 路由级中心件(仅作用于特定路由)
示例:身份验证中心件
3. Express 内置中心件(无需额外安装)
示例:剖析 JSON 哀求体
4. 第三方中心件(如 cors, morgan)
示例:利用 cors 答应跨域哀求
5. 错误处置惩罚中心件(用于捕捉错误)
示例:全局错误处置惩罚中心件
4. 总结
在 Node.js 的 Express 框架中,中心件是用于处置惩罚哀求和相应的焦点机制。中心件的作用包括日志记录、哀求剖析、权限验证、错误处置惩罚等。本文将详细先容 Express 框架中心件的重要分类,并提供完备的代码示例,帮助开辟者更好地明白和应用中心件。
1. 目次结构
- /your-project
- ├── app.js # 主文件,启动应用
- ├── middleware
- │ ├── logger.js # 应用级中间件(日志记录)
- │ ├── auth.js # 路由级中间件(身份验证)
- │ ├── requestTime.js # 内置中间件(解析请求时间)
- │ ├── notFound.js # 404 处理中间件
- │ ├── errorHandler.js # 错误处理中间件
- └── package.json # 依赖管理文件
复制代码 2. Express 中心件的重要分类
Express 框架中的中心件重要分为以下几类:
- 应用级中心件(作用于整个应用)
- 路由级中心件(仅作用于特定路由)
- 内置中心件(Express 提供的官方中心件)
- 第三方中心件(社区开辟的功能增强中心件)
- 错误处置惩罚中心件(专门用于捕捉和处置惩罚错误)
3. 代码实现
1. 应用级中心件(作用于整个应用)
应用级中心件适用于全局处置惩罚,如日志记录、权限验证等,通常利用 app.use() 注册。
示例:日志记录中心件
文件名:middleware/logger.js
- // middleware/logger.js
- const logger = (req, res, next) => {
- console.log(`Received ${req.method} request for ${req.url}`);
- next(); // 继续执行下一个中间件或路由处理
- };
- module.exports = logger;
复制代码 在 app.js 中利用:
- // app.js
- const express = require('express');
- const app = express();
- const logger = require('./middleware/logger');
- // 全局使用日志中间件
- app.use(logger);
- app.get('/', (req, res) => {
- res.send('<h1>Home Page</h1>');
- });
- app.listen(3000, () => {
- console.log('Server running on http://localhost:3000');
- });
复制代码 运行结果:
访问 http://localhost:3000/ 时,终端输出:
- Received GET request for /
复制代码 2. 路由级中心件(仅作用于特定路由)
路由级中心件通常用于身份验证、权限控制等功能。
示例:身份验证中心件
文件名:middleware/auth.js
- // middleware/auth.js
- const auth = (req, res, next) => {
- if (req.query.auth === 'true') {
- next(); // 通过验证,继续执行
- } else {
- res.status(403).send('<h1>Access Denied
- </h1>');
- }
- };
- module.exports = auth;
复制代码 在 app.js 中利用:
- const auth = require('./middleware/auth');
- app.get('/dashboard', auth, (req, res) => {
- res.send('<h1>Welcome to the Dashboard
- </h1>');
- });
复制代码 运行结果:
访问 http://localhost:3000/dashboard?auth=true:
访问 http://localhost:3000/dashboard:
3. Express 内置中心件(无需额外安装)
Express 提供了一些内置的中心件,如 express.json()、express.urlencoded() 和 express.static()。
示例:剖析 JSON 哀求体
在 app.js 中添加:
- app.use(express.json());
- app.post('/data', (req, res) => {
- res.json({ received: req.body });
- });
复制代码 利用 Postman 发送 JSON 数据:
哀求体(JSON 格式):
- { "name": "Alice", "age": 25 }
复制代码 返回结果:
- { "received": { "name": "Alice", "age": 25 }
- }
复制代码 4. 第三方中心件(如 cors, morgan)
第三方中心件通常用于增强 Express 应用的功能,例如 cors 处置惩罚跨域哀求,morgan 记录日志等。
示例:利用 cors 答应跨域哀求
安装 cors:
在 app.js 中利用:
- const cors = require('cors');
- app.use(cors());
- app.get('/api/data', (req, res) => {
- res.json({ message: 'CORS Enabled' });
- });
复制代码 5. 错误处置惩罚中心件(用于捕捉错误)
错误处置惩罚中心件专门用于处置惩罚应用中的错误,必须包罗 err 参数。
示例:全局错误处置惩罚中心件
文件名:middleware/errorHandler.js
- // middleware/errorHandler.js
- const errorHandler = (err, req, res, next) => {
- console.error(`Error: ${err.message}`);
- res.status(500).send('<h1>Internal Server Error
- </h1>');
- };
- module.exports = errorHandler;
复制代码 在 app.js 中利用:
- const errorHandler = require('./middleware/errorHandler');
- app.get('/error', (req, res, next) => {
- next(new Error('Something went wrong!')); // 触发错误处理
- });
- app.use(errorHandler);
复制代码 访问 http://localhost:3000/error,页面表现:
终端输出:
- Error: Something went wrong!
复制代码 4. 总结
- 应用级中心件 - 作用于整个应用,如日志记录。
- 路由级中心件 - 仅在特定路由见效,如身份验证。
- Express 内置中心件 - 剖析 JSON 哀求、静态文件等。
- 第三方中心件 - 额外安装,如 cors 处置惩罚跨域哀求。
- 错误处置惩罚中心件 - 捕捉错误并返回友好的错误信息。
本教程提供了完备代码和运行示例,帮助开辟者深入明白 Express 中心件的分类和利用,进步应用的可维护性和扩展性!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |