AspNetCore WebApi数据验证的实现方法

  介绍

这篇文章主要介绍AspNetCore WebApi数据验证的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强>前言

小明最近又遇到麻烦了,小红希望对接接口传送的数据进行验证,既然是小红要求,那小明说什么都得满足呀,这还不简单嘛。

<强>传统验证

[HttpPost]   public  async  Task

小明写着写着发现这样写,很多接口相同得地方都要写,使得代码比较臃肿。

<强>使用模型验证

在参数模型上打上注解

namespace  App001.Models   {///才能,& lt; summary>///才能,待办事项///才能,& lt;/summary>   public 才能;class  Todo   {才能   ,,,///,& lt; summary>   ,,,///ID   ,,,///,& lt;/summary>   ,,,public  Guid  Id {组,得到,,,}   ,,,///,& lt; summary>   ,,,///,名称   ,,,///,& lt;/summary>   ,,,(要求(=ErrorMessage “名称不能为空“))   ,,,public  string  Name {组,得到,,,}   ,,}   }

邮差测试名字传值未空时,则返回:

{   “type"才能:,“https://tools.ietf.org/html/rfc7231 # section-6.5.1"   “title"才能:,“One 或是more  validation  errors 发生!”   “status"才能:,400年,   “traceId"才能:,“| df184e36-4e11844dfd38a626 !”,   “errors"才能:,{   ,,,“Name":,   ,,,,,“名称不能为空”;   ,,,)   ,,}   }

注意Web API控制器具有[ApiController]特性,则它们不必检查状态。IsValid。在此情况下,如果模型状态无效,将返回包含错误详细信息的自动HTTP 400响应。

内置特性

<李>

(信用卡):验证属性是否具有信用卡格式。

<李>

(比较):验证模型中的两个属性是否匹配。

<李>

[EmailAddress]:验证属性是否具有电子邮件格式。

<李>

(电话):验证属性是否具有电话号码格式。

<李>

(范围):验证属性值是否在指定的范围内。

<李>

[RegularExpression]:验证属性值是否与指定的正则表达式匹配。

<李>

[要求]:验证字段是否不为null。

<李>

[StringLength]:验证字符串属性值是否不超过指定长度限制。

<李>

[Url]:验证属性是否具有Url格式。

<李>

(远程):通过在服务器上调用操作方法来验证客户端上的输入。

<强>错误消息

通过验证特性可以指定要为无效输入显示的错误消息,例如:

(要求(=ErrorMessage “名称不能为空“))

<强>使用自定义返回消息格式

有两种方式:

<李>

使用自定义过滤器

<李>

使用默认模型验证,需要在控制器上面加上【ApiController】。

<强>使用自定义过滤器

首先,创建ModelValidateActionFilterAttribute过滤器。

public  class  ModelValidateActionFilterAttribute : ActionFilterAttribute   {   public 才能override  void  OnActionExecuting (ActionExecutingContext 上下文)   {才能   ,,,if  (context.ModelState.IsValid !)   ,,,{   ,,,,,//获取验证失败的模型字段   ,,,,,var  errors =context.ModelState   ,,,,,,,其中(e =祝辞,e.Value.Errors.Count 祝辞,0)   ,,,,,,,.Select (e =祝辞,e.Value.Errors.First () .ErrorMessage)   ,,,,,,,.ToList ();      ,,,,,var  str =, string.Join(“|“,,错误);      ,,,,,//设置返回内容   ,,,,,var  result =新   ,,,,,{   ,,,,,,,Code =, 10000年,   ,,,,,,,Msg =,“未通过数据验证!”,   ,,,,,,,FullMsg =str   ,,,,,};      ,,,,,context.Result =, new  BadRequestObjectResult(结果);   ,,,}      ,,}   }

然后,启动。ConfigureServices将过滤器添加到控制器中并关闭默认模型验证,另外我们还添加了AddNewtonsoftJson。

//关闭默认模型验证   services.Configure

AspNetCore WebApi数据验证的实现方法