Day15-5:中间件 封装为 扩展方法

只要是自定义中间件,无论简单复杂,全部封装成扩展方法!

  • 日志中间件 → app.UseLogMiddleware() → 必须封装
  • 异常中间件 → app.UseGlobalException() → 必须封装
  • 以后任何中间件 → 全都封装

这不是可选,是规范、专业、架构整洁度的体现。

一、为什么中间件要封装?

  1. Program.cs 干净、清爽、一眼看懂( Program.cs 只负责调用 ,不负责细节**)**
  2. 符合官方风格(UseCors、UseRouting...)
  3. 以后加参数、加配置,不用动 Program.cs
  4. 别人一看就知道你是专业后端

二、最关键的一句话(背住)

UseMiddleware 是底层机制,拓展方法是规范封装( 拓展方法 = 语法糖 = 让代码更优雅、更规范、更像官方框架风格**)**

功能一样,档次不一样。现在可以这么理解:

  • app.UseMiddleware<T>() = 毛坯房
  • app.UseGlobalException() = 精装修房

能住,但好看、规范、专业完全不同

三、拓展 最终标准代码(例)

1. 日志中间件扩展方法(新建文件)

MiddlewareExtensions.cs

复制代码
using Microsoft.AspNetCore.Builder;

// 静态类
public static class MiddlewareExtensions
{
    /// <summary>
    /// 全局异常中间件
    /// </summary>
    public static IApplicationBuilder UseGlobalException(this IApplicationBuilder app)
    {
        return app.UseMiddleware<ExceptionMiddleware>();
    }

    /// <summary>
    /// 请求日志中间件
    /// </summary>
    public static IApplicationBuilder UseRequestLog(this IApplicationBuilder app)
    {
        return app.UseMiddleware<LogMiddleware>();
    }
}

2. Program.cs 调用(超级干净)

复制代码
// 中间件顺序:日志 → 异常 → 其他
app.UseRequestLog();        // 日志
app.UseGlobalException();   // 异常

app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();

最终效果

干净、规范、专业、可维护、可扩展。

相关推荐
阿昌喜欢吃黄桃3 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
半夜修仙4 天前
延迟队列的介绍及常见问题
java·数据库·中间件·rabbitmq
手握风云-4 天前
一条消息的旅程:RabbitMQ 学习与实践(一)
中间件·rabbitmq
RH2312114 天前
2026.6.8Linux
java·数据库·中间件
理人综艺好会5 天前
双Token机制在实际项目中的应用与实践
中间件·token
番茄去哪了6 天前
神领物流面试题(一)
java·大数据·中间件
念何架构之路6 天前
消息中间件
中间件
都说名字长不会被发现6 天前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件
瀚高PG实验室6 天前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
之歆7 天前
Day11_Express 深入解析:从中间件到项目实战
中间件·express