.Net WebApi进行优雅的参数校验
受到了spring boot中注解校验参数的启发,于是想,难道微(巨)软(硬)的.net不行吗? 于是有了本次尝试。
当我们日常开发webapi接口时,难免会有一堆参数校验,例如校验参数是否为空,密码长度……
条件校验
一般的操作是下面这样的:
emm……目前这是2个字段参数,如果参数很多,那这个老太太裹脚布一般的 if 条件,看着就很难受(当然这样写丝毫没有问题)。响应结果如下:
属性校验
说完了一般的操作,那不一般的操作是啥样?
在dto参数对象的字段加上校验属性,然后我们可以甩掉裹脚布了,放心大胆的写代码了。
屏蔽了if条件之后,响应结果如下:
可以看到,直接就是参数无效,返回状态码400。输入部分参数之后结果如下:
完整正确的输入参数之后,请求通过:
看到这,想必会有个疑问,这是 post 请求,参数在 body 里边,有字段。那要是 get 请求,参数在 url 里,没有字段,怎么加属性校验?
继续往下看
可以看到,属性依然可以使用的啦~,响应结果如下:
使用属性的方式来进行参数校验,是不是很优雅呢?这样减少了很多的 if 条件代码,代码也会清爽干净不少,赶紧用起来吧。
属性说明
使用注解需要添加 System.ComponentModel.DataAnnotations
命名空间,在VS中,正确键入属性后,会自动提示添加引用的。
注意看这个库的名称DataAnnotations
-数据注解。那为什么又叫属性呢,因为我们上面使用的注解(属性)都是以Attribute后缀的,且都派生自属性基类Attribute
,只不过在使用时,编辑器自动隐藏了后缀。因此从名称上看叫它属性
,似乎更合理(纯属个人瞎猜,也可能是微软向跟java中注解区分开吧=.=),本文中注解和属性意义相同
可以看到这个库中有很多属性
这里对上面的代码中使用到的属性进行说明:
- Required : 表示必须,此参数非空,ErrorMessage 是错误提示信息
- MaxLength :最大长度,可指定最大长度 ,错误提示信息
- MinLength : 最小长度,可指定最小长度,错误提示信息
- FromBody : 表示参数放入 body 中进行传递
- FromUri : 表示参数作为 url 一部分
出处:https://www.nhit.icu/archives/68/
标签:WebApi,校验,参数,提示信息,使用,注解,Net,属性 From: https://www.cnblogs.com/mq0036/p/17571978.html