简言:

  最近做项目用WebAPI Core时,想把返回数据的格式,统一弄成:{“errorMsg”:"xxx","Data":"xxxx"}这种。谁知道,WebAPI的model会自动验证,于是乎格式成了:

   我想能不能自己像在MVC里面那样自己控制model验证:ModelState.IsValid。找了很多资料,都没有关于.net core web api的解决方法。没办法,只能自己动手咯!嘻嘻,请看:

我这里是利用IResultFilter来实现的

    1、 首先第一步:建一个统一数据格式的类,我这里还是用http状态码来判断请求是否成功:

public class APIResult
{
public string ErrorMsg { get; set; }
public object Data { get; set; }
}

    2、然后再建一个继承自IResultFilter的类:

    public class APIResultFilter : IResultFilter
{
public void OnResultExecuted(ResultExecutedContext context)
{
}
public void OnResultExecuting(ResultExecutingContext context)
{
if (context.Result is BadRequestObjectResult)
{
BadRequestObjectResult res = (BadRequestObjectResult)context.Result;
SerializableError obj = res.Value as SerializableError;
StringBuilder sb = new StringBuilder();
foreach (var item in obj)
{
var vals = item.Value as string[];
if (vals != null)
{
sb.AppendLine(vals[0]);
}
}
context.Result = new JsonResult(new APIResult { ErrorMsg = sb.ToString() }) { StatusCode=400};
return;
}
}
}

    因为webapi core好像会自动验证Model,返回的类型是:BadRequestObjectResult。我是通过反射GetType()查看的。

    3、最后一步就是将Filter添加到WebApi中了:

----------------------------------------------------结束线------------------------------------------

最新文章

  1. 总结-eclipse
  2. uploadify 火狐不兼容问题解决方案
  3. Mybaits学习总结2
  4. java提高篇---Vector
  5. leetcode 96 Unique Binary Search Trees ----- java
  6. Oracle EBS中查询Profile的各种SQL【转载】
  7. Libsvm的MATLAB调用和交叉验证
  8. jquery mobile基本结构搭建
  9. CCTF-PWN1&&PWN3
  10. android 破解九宫格
  11. windows 7 telnet 开启关闭
  12. JPA 系列教程12-复合主键-2个@Id+@IdClass
  13. .进程&线程(&java.lang.Thread)详解
  14. 【二次开发jumpserver】——整合jumpserver与zabbix推送主机功能
  15. redisson整合spring
  16. ECMAScript6 入门 函数的扩展
  17. CentOS7安装Go环境
  18. java中int和String之间的转换
  19. 配置Sublime Text2的python运行环境(Sublime Text 3也类似)
  20. 深入研究 UCenter API For .NET

热门文章

  1. 8. 使用Fluentd+MongoDB采集Apache日志
  2. Go 源码解读|如何用好 errors 库的 errors.Is() 与 errors.As() 方法
  3. 手把手教你使用LabVIEW OpenCV DNN实现手写数字识别(含源码)
  4. centos7中配置java + mysql +jdk +使用jar部署项目
  5. FastJson序列化对象复杂时出错问题解决
  6. 代码随想录第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
  7. 2022-08-08-esp32把玩记-①
  8. abstract关键字的使用
  9. 【算法】Tarjan
  10. 解决办法:ImportError:'module'object has no attribute 'check specifier'