一、定义一个消息返回类
使用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