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();

最终效果

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

相关推荐
katasea11 小时前
第05章:信创技术栈选型:服务器、操作系统、数据库、中间件适配对比
服务器·数据库·中间件
yexianglunbai1 天前
中间件(Middleware)详解:概念、作用与实战
java·开发语言·中间件
染指11102 天前
128.Agent-LangChain核心组件-中间件-调用模型的时候
人工智能·windows·中间件·langchain·agent
染指11103 天前
129.Agent-LangChain核心组件-自定义中间件-通过类实现(AgentMiddleware)
人工智能·中间件·langchain·agent·agents
程序猿乐锅3 天前
【黑马点评 | 第九篇】秒杀优化-异步实现
java·spring boot·redis·后端·spring·中间件·mybatis
liangshanbo121510 天前
Redux 的中间件(Middleware)的工作机制
中间件·react·redux
今年下半年10 天前
SpringBoot整合金蝶中间件
spring boot·中间件·maven
青山木10 天前
RocketMQ 入门到原理(六):可靠性全景
java·后端·中间件·架构·rocketmq
青山木10 天前
RocketMQ 入门到原理(五):特殊消息类型
java·后端·中间件·架构·rocketmq
青山木11 天前
RocketMQ 入门到原理(三):消息存储原理
java·后端·中间件·架构·rocketmq