asp.net webapi Parameter Binding 实现NotNull 特性标签

记录下:

  请仔细查阅,微软文档地址 https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

  asp.net webApi老系统有个需求。在控制器上执行的action的参数不能为空。

  需要像 FromBody 这样,可以*标注的标签

  asp.net webapi Parameter Binding 实现NotNull 特性标签

 

 

   问题点

  关于 FromUri与FromBody 参考微软文档

  如何在 asp.net 执行 FromBody 或者 FromUri 代码之后再执行我们的 NotNull 判断?

  Asp.Net WebApi 如何确定参数使用 FromBody 还是 FromUri ?

  如下图:

  asp.net webapi Parameter Binding 实现NotNull 特性标签

 

 

   通过Resharp反编译可以查看到,通过 action 中的参数类型判断,使用FromUri还是FromBody

  实现方式

  FromUri代码

  asp.net webapi Parameter Binding 实现NotNull 特性标签

 

 

   通过 base.GetValueProviderFactories(configuration) 最终获取到 “QueryStringValueProvider”(从请求地址中取值),“RouteDataValueProvider”(从路由中取值)  如下图

  asp.net webapi Parameter Binding 实现NotNull 特性标签

 

 

   FromBody如下图:

  asp.net webapi Parameter Binding 实现NotNull 特性标签

 

 

 

  asp.net webapi Parameter Binding 实现NotNull 特性标签

 

 

   根据请求的ContentType然后得到对应的Fromatting从请求负载中取值

  我的实现方式  

  实现我的 FromBody 与 FromUri 。 当请求进入asp.net Webapi应用后 先走 FromBody 或 FromUri  代码,执行完后,再执行我的 NotNull 判断,如是null则抛出异常。

  具体实现代码,请参考我的仓库  Asp.Net/全局异常捕捉/CatchGlobalException/CatchGlobalException/Controllers/NotNull.cs    · zheng_qi/我的仓库 - 码云 - 开源中国 (gitee.com)

上一篇:springboot汇总


下一篇:05_自定义注解校验参数