手把手教你 AspNetCore WebApi:数据验证
前言
小明最近又遇到麻烦了,小红希望对接接口传送的数据进行验证,既然是小红要求,那小明说什么都得满足呀,这还不简单嘛。
传统验证
小明写着写着发现这样写,很多接口相同得地方都要写,使得代码比较臃肿。
使用模型验证
在参数模型上打上注解
Postman测试Name传值未空时,则返回:
注意Web API 控制器具有 [ApiController] 特性,则它们不必检查ModelState.IsValid。在此情况下,如果模型状态无效,将返回包含错误详细信息的自动 HTTP 400 响应。
内置特性
[CreditCard]:验证属性是否具有信用卡格式。
[Compare]:验证模型中的两个属性是否匹配。
[EmailAddress]:验证属性是否具有电子邮件格式。
[Phone]:验证属性是否具有电话号码格式。
[Range]:验证属性值是否在指定的范围内。
[RegularExpression]:验证属性值是否与指定的正则表达式匹配。
[Required]:验证字段是否不为 null。
[StringLength]:验证字符串属性值是否不超过指定长度限制。
[Url]:验证属性是否具有 URL 格式。
[Remote]:通过在服务器上调用操作方法来验证客户端上的输入。
Error messages
通过验证特性可以指定要为无效输入显示的错误消息。 例如:
使用自定义返回消息格式
有两种方式:
使用自定义过滤器
使用默认模型验证,需要在控制器上面加上【ApiController】。
使用自定义过滤器
首先,创建ModelValidateActionFilterAttribute过滤器。
然后,Startup.ConfigureServices将过滤器添加到控制器中并关闭默认模型验证,另外我们还添加了AddNewtonsoftJson。
最后,我们看一下返回效果:
使用默认模型验证
小结
目前为止,小明把数据验证也搞定了,是不是so easy!
版权声明: 本文为 InfoQ 作者【AI代笔】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b896d949818c604e33b4d34d】。文章转载请联系作者。
评论