文章目录 项目地址 一、Error Pattern 1.1 定义Error类 1. ErrorType 可发生的错误类型 2. Error类 3. ValidataionError 1.2 给每个实体创建Error类 1. CategoryError类 2. TicketErrror类 3. EventErrror类 二、Result Pattern 1.1 自定义返回Result 1.2 Api层的Result返回处理 1. Match方法使用委托去除if else判断 2. ApiResults专门处理Problem的返回 3. 静态方法和实例方法this补充 4. 泛型委托`Func<TOut>` 1.3 Result Pattern使用 1. 只需要返回一个Guid 2. 非Controller里的报错 三、Dapper复杂查询拼接 四、Common模块提取 4.1 Common组成 4.2 通用服务注册 1. Application层的服务 2. Infrastructure层 3. Program里传参 五、多模块配置 5.1 创建Events模块单独配置 5.2 创建ConfigurationExtension 六、HTTP context 1. 中间件共享的数据容器 2. 安全、认证相关数据 3. Trace / Telemetry / Logging 相关数据 7、Middleware Pipeline Behavior 7.1 日志处理 1. 创建日志处理管道行为 2. 注册behavior在MediarR里 3. program里配置serilog 7.2 异常处理 1. 自定义异常类 2. 异常处理管道行为 3. Api层全局异常处理 4. 将异常处理添加到服务里 7.3 Validation 7.4 注册Pipeline behavior
项目地址
dbt
airflow
一、Error Pattern
在使用Result Pattern之前,先定义好Error类
1.1 定义Error类
该项目所有用到的Error类型,先定义出来
1. ErrorType 可发生的错误类型
2. Error类
主要作用是定义Error发生之后,返回的格式,主要通过工厂方法进行Error的处理
public record Error
{ public static readonly Error None = new ( string . Empty, string . Empty, ErrorType. Failure) ; public static readonly Error NullValue = new ( "General.Null" , "Null value was provided" , ErrorType. Failure) ; public Error ( string code, string description, ErrorType type) { Code = code; Description = description; Type = type; } public string Code { get ; } public string Description { get ; } public ErrorType Type { get ; } public static Error Failure ( string code, string description) => new ( code, description, ErrorType. Failure) ; public static Error NotFound ( string code, string description) => new ( code, description, ErrorType. NotFound) ; public static Error Problem ( string code, string description) => new ( code, description, ErrorType. Problem) ; public static Error Conflict ( string code, string description) => new ( code, description, ErrorType. Conflict) ;
}
3. ValidataionError
1.2 给每个实体创建Error类