血染大明,墨西哥毒贩电锯斩首,宝宝童书
说到验证,那就需要做三件事:
定义验证规则
按验证规则进行检查
报告验证的错误。在把错误报告给api消费者的时候,报告里并不包含到底是服务端还是api消费者引起的错误,这是状态码的工作。而通常响应的body里面会包含一组验证错误信息,api消费者可以把这些信息展示给api消费者的用户。
想要定义验证规则,我们可以使用asp.net core内置的方式或者使用第三方库。
在asp.net core里面,验证规则可以通过以下的方式来进行定义:
data annotations。例如 [required],[maxlength]等等。
自定义atrribute。
实现ivalidatableobject接口。
验证的是输入数据,而不是输出数据。例如post请求body里面的参数就需要进行验证,而get请求返回响应里面的内容就不需要验证了。
asp.net core 内置了一个 modelstate对象,它用来做验证规则检查。
modelstate对象是一个dictionary(字典),它既包含model的状态,又包含model的绑定验证信息。
它也包含针对每个提交的属性值的错误信息的集合。每当有请求进来的时候,定义好的验证规则就会被检查。
如果有一个规则验证不通过的话,那么modelstate.isvalid()方法就会返回false。而且如果传进来的属性的类型不正确的话,该方法也会返回false。
由于验证错误肯定是由客户端引起的,所以返回的状态码肯定是4xx。针对验证错误,具体的就是422 unprocessable entity 这个状态码。
之前也讲过 422 表示服务器理解了entity的content-type,并且语法也正确,但是仍然无法处理所包含的结构数据。例如:语法正确,但是语义不正确。
当报告验证错误信息的时候,我们不仅要使用正确的状态码,还需要在响应的body里面包含验证错误信息。
rest并没有规定返回的错误信息的格式,但是有一个标准却规定了此事:validation problem details rfc,它定义了这样的响应的body应该是什么样的。asp.net core内置了对这个标准的支持,后续视频教程中可以看到。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论