统一参数校验、异常处理、结果返回

在.NET Core中,统一异常处理、结果返回和参数校验是提高应用程序健壮性和一致性的关键部分。

统一异常处理

在.NET Core中,你可以使用中间件(Middleware)来统一处理异常。这通常涉及到创建一个自定义的异常处理中间件,它可以捕获异常并处理在请求处理过程中抛出的任何异常。

  1. 创建自定义异常处理中间件:实现一个中间件,它捕获异常并转换为适当的HTTP响应
  2. 在Program.cs中配置中间件:将你的异常处理中间件添加到管道中,并确保它在其他中间件之后运行。
  3. 记录异常:在异常处理中间件中,你可以使用日志记录框架
异常处理中间件:
C#
public class ExceptionHandlerMiddleware  
{  
    private readonly RequestDelegate _next;  
    private readonly ILogger<ExceptionHandlerMiddleware> _logger;  
  
    public ExceptionHandlerMiddleware(RequestDelegate next, ILogger<ExceptionHandlerMiddleware> logger)  
    {  
        _next = next;  
        _logger = logger;  
    }  
  
    public async Task InvokeAsync(HttpContext context)  
    {  
        try  
        {  
            await _next(context);  
        }  
        catch (Exception ex)  
        {  
            _logger.LogError(ex, "An error occurred while processing the request.");  
            context.Response.StatusCode = StatusCodes.Status500InternalServerError;  
            await context.Response.WriteAsync("Internal Server Error");  
        }  
    }  
}
在Program中配置中间件:
C#
 app.UseMiddleware<ExceptionHandlerMiddleware>();  

结果返回

对于API的响应,通常建议使用一种统一的结果返回格式。

这有助于客户端解析和理解响应。

  1. 创建响应模型:定义一个包含success、message、data、errors等属性的响应模型。
  2. 在控制器中使用响应模型:当控制器处理请求并准备返回响应时,使用响应模型来封装数据
  3. 处理错误:如果发生错误,将错误信息添加到响应模型的error属性中,并将success设置为false
C#
{  
  "success": true,  
  "message": "Operation successful",  
  "data": { /* 响应数据 */ },  
  "errors": null  
}

参数校验

参数校验是确保API输入数据的有效性和完整性的重要步骤。

在.NET Core中,你可以使用数据注解(Data Annotations)和模型验证(Model Validation)来实现参数校验。

  1. 在模型上使用数据注解:在你的模型类上使用数据注解来定义验证规则,如[Required]、[Range]等
  2. 在控制器中进行模型验证:在控制器方法中,使用ModelState.isValid来检查模型是否有效。如果无效,可以返回一个包含验证错误的响应。
  3. 自定义验证逻辑:如果需要更复杂的验证逻辑,你可以实现自定义验证属性或接口。
C#
  if (!ModelState.IsValid)  
        {  
            return BadRequest(new { errors = ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage) });  
        }  
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部