【LSP】AspNetCore WebApi:数据验证

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-10-10

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

传统验证

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

使用模型验证
在参数模型上打上注解

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

内置特性
[CreditCard]:验证属性是否具有信用卡格式。
[Compare]:验证模型中的两个属性是否匹配。
[EmailAddress]:验证属性是否具有电子邮件格式。
[Phone]:验证属性是否具有电话号码格式。
[Range]:验证属性值是否在指定的范围内。
[RegularExpression]:验证属性值是否与指定的正则表达式匹配。
[Required]:验证字段是否不为 null。
[StringLength]:验证字符串属性值是否不超过指定长度限制。
[Url]:验证属性是否具有 URL 格式。
[Remote]:通过在服务器上调用操作方法来验证客户端上的输入。
Error messages
通过验证特性可以指定要为无效输入显示的错误消息。 例如:

[Required(ErrorMessage = "名称不能为空")]
使用自定义返回消息格式
有两种方式:

使用自定义过滤器
使用默认模型验证,需要在控制器上面加上【ApiController】。
使用自定义过滤器
首先,创建ModelValidateActionFilterAttribute过滤器。

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

使用默认模型验证

小结
目前为止,小明把数据验证也搞定了,是不是so easy!

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    124

  • 帖子

    0

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.1027s Mem:2049Kb