第6章 Express中间件的深入理解(二)

3 中间件的应用场景

中间件在 Express 应用中有广泛的应用场景,包括日志记录、认证与授权、请求体解析、错误处理等。

3.1 日志记录

可以使用中间件记录每个请求的详细信息,以便调试和监控。

示例:

const morgan = require('morgan');

// 使用 morgan 中间件记录 HTTP 请求日志
app.use(morgan('combined'));

代码详解:

  • morgan('combined'):使用 morgan 记录 HTTP 请求日志。
3.2 认证与授权

可以使用中间件实现用户认证与授权,确保只有授权用户才能访问特定资源。

示例:

// 自定义认证中间件
function authenticate(req, res, next) {
    const token = req.headers['authorization'];
    if (token === 'valid-token') {
        next(); // 用户已认证,调用下一个中间件或路由处理函数
    } else {
        res.status(401).send('Unauthorized'); // 用户未认证,返回 401 状态码
    }
}

// 保护路由,只有已认证用户才能访问
app.get('/protected', authenticate, (req, res) => {
    res.send('Protected resource');
});

代码详解:

  • authenticate(req, res, next):自定义认证中间件。
  • res.status(401).send('Unauthorized'):返回 401 状态码,表示用户未认证。
3.3 请求体解析

可以使用中间件解析不同格式的请求体,如 JSON、URL 编码的表单数据等。

示例:

// 解析 JSON 请求体
app.use(express.json());

// 解析 URL 编码的请求体
app.use(express.urlencoded({ extended: true }));

代码详解:

  • express.json():解析 JSON 请求体。
  • express.urlencoded({ extended: true }):解析 URL 编码的请求体。
3.4 错误处理

可以使用错误处理中间件捕获和处理应用中的所有错误。

示例:

// 普通中间件,模拟抛出错误
app.get('/error', (req, res, next) => {
    const err = new Error('Something went wrong');
    next(err); // 将错误传递给错误处理中间件
});

// 错误处理中间件
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Internal Server Error');
});

代码详解:

  • next(err):将错误传递给错误处理中间件。
  • 错误处理中间件:带有四个参数,用于处理所有传递过来的错误。

通过本章内容,读者应该能够理解并掌握 Express 中间件的各种用法,包括应用级中间件、路由级中间件、错误处理中间件、内置中间件、第三方中间件和自定义中间件。这些知识将帮助读者在 Express 应用中实现复杂的请求和响应处理逻辑。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值