项目使用了原生django 没有了序列化器需要手写校验十分痛苦 于是找到Scheme 帮助我们进行校验
Schema是什么?
不管我们做什么应用,只要和用户输入打交道,就有一个原则--永远不要相信用户的输入数据。意味着我们要对用户输入进行严格的验证,web开发时一般输入数据都以JSON形式发送到后端API,API要对输入数据做验证。一般我都是加很多判断,各种if
,导致代码很丑陋,能不能有一种方式比较优雅的验证用户数据呢?Schema
就派上用场了。
Schema
非常简单,也就几百行的代码,最核心的类就一个:Schema
。
1. 给Schema类
传入类型(int
、str
、float
等)
例如:
from schema import Schema
Schema(int).validate(10)
10
Schema(int).validate('10')
SchemaUnexpectedTypeError: '10' should be instance of 'int'
可见Schema
会去验证validate
方法传入的对象是不是所指定的类型,是则返回传入的数据,否则抛出一个SchemaError
的异常(SchemaUnexpectedTypeError
是SchemaError
的子类)。
2. 给Schema类
传入可调用的对象(函数、带__call__
的类等)
例如:
Schema(l