这个中间价比较简单,只是当异常发生时,用来统一返回的异常格式
namespace WeCharGroupTest.Untities
{
public class ExceptionMiddleware
{
private readonly ILogger _logger;
private readonly RequestDelegate _next;
public ExceptionMiddleware(ILogger<ExceptionMiddleware> logger, RequestDelegate next)
{
_logger = logger;
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
try
{
await _next(httpContext);
}
catch(Exception e)
{
httpContext.Response.ContentType = "application/json";
_logger.LogError(e, httpContext.Request.Path);
var result = new Response<string>()
{
Status = 400,
msg = e.Message
};
await httpContext.Response.WriteAsync(result.ToJson());//ToJson是一个扩展方法
}
}
}
public class Response<T>
{
/// <summary>
/// </summary>
public int Status { get; set; } = 200;
/// <summary>
/// </summary>
public string msg { get; set; } = "操作成功!";
/// <summary>
/// </summary>
public T Data { get; set; }
/// <summary>
/// </summary>
/// <param name="data"></param>
/// <param name="msg"></param>
public void Success(T data, string msg = "")
{
this.Status = 200;
this.msg = msg;
this.Data = data;
}
}
}