一、定义一个消息返回类
使用Action过滤器
首先定义一个消息返回类,用于所有接口消息规范返回格式,当然,这不是必须的;
/// <summary>
/// 公用的返回消息格式
/// </summary>
public class ReturnMsg
{
/// <summary>
/// 返回的Code
/// </summary>
public string Code { get; set; }
/// <summary>
/// 消息
/// </summary>
public string Msg { get; set; }
}
二、自定义Action过滤器
1.然后自定义Action过滤器,我在.NetCore3.1环境下实现,使用的是Attribute的形式。
代码如下(示例):
public class ModelValidateActionFilterAttribute : ActionFilterAttribute
{
//OnActionExecuted 在执行操作调用完成后,在返回结果操作之前调用。
//OnActionExecuting 在模型绑定完成后,在执行操作之前调用。
//OnResultExecuted 在操作结果执行之后调用。
//OnResultExecuting 在操作结果执行之前调用。
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
//公共返回数据类
ReturnMsg returnMsg = new ReturnMsg() { Code = "500" };
//获取具体的错误消息
foreach (var item in context.ModelState.Values)
{
//遍历所有项目的中的所有错误信息
foreach (var err in item.Errors)
{
//消息拼接,用|隔开,前端根据容易解析
returnMsg.Msg += $"{err.ErrorMessage}"+",";
}
}
returnMsg.Msg = returnMsg.Msg.TrimEnd(',')
context.Result = new JsonResult(returnMsg);
}
}
}
2.读入数据
之后要使用Action过滤器,使用方式有很多种,如全局,控制器,Action上;这里采用的是全局的形式使用;

现在就加上了,现在如果在过滤器中验证不通过,是不会走到具体的Action方法中的,运行结果如下,按我们定义的消息格式返回了
参考
https://www.cnblogs.com/zoe-zyq/p/12627630.html
本文介绍了如何在ASP.NET Core 3.1环境中创建一个自定义的Action过滤器,用于统一接口返回消息格式。首先定义了一个`ReturnMsg`类作为公共返回消息格式,然后实现`ModelValidateActionFilterAttribute`过滤器,该过滤器在模型验证失败时,将错误信息转换为定制的消息并返回。过滤器可以全局应用,确保验证不通过时不会执行具体的操作,提供了一种优雅的错误处理方式。
9811

被折叠的 条评论
为什么被折叠?



