Schema库的简单学习
Python Python Module Schema 库的简单学习 Schema 是一个简单易用的 python 数据校检三方库,Schema on Github. 在 web app 中,经常需要接收用户传过来的数据,然后做处理。但是用户由于各种原因,输入的数据并不如人意。前端发送 json 形式数据到后端 api,以往的解决方案甚是暴力,对 json 的 key 的值进行各种 if 检验,甚至要去做正则匹配。使用 schema 库能够非常优雅的解决这个问题。 Schema 和 marshmallow 的取舍。之前学习过 marshmallow,它有一个方法Schema.validate,同样可以完成数据校检,但是需要先生成一个独特的 Schema 类,用起来更适合序列化/反序列化的场景。而 Schema 库只做一件事,那就是数据校检。 核心类 Schema 数据检验最重要的类 Regex 正则匹配检验用到的类 Use And Or 一个类、一个方法 这是 schema 库里最重要的概念。 一个类是 Schema 类,可以理解为 schema 库的入口,什么都可以往里面传。 一个方法是 validate 方法,它接入一个数据或者一个 obj。 执行校检就是处理 validate 接收的数据和 Schema 类接收的 schema 之间的关系。 Schema 类传入基础类型 str,int,float,object >>> from schema import Schema >>> Schema(str).validate('abc') 'abc' >>> Schema(int).validate(123) 123 >>> Schema(float).validate(1.23) 1.23 >>> Schema(object).validate('abcd') 'abcd' >>> Schema(str).validate(123) schema.SchemaUnexpectedTypeError: 123 should be instance of 'str' 基础类型没什么好说的,只能检验最简单的数据。注意 object 是基类,也就是 validate 里的数据符合语法就会原样输出,但我们可以基于此做些类的判断 ...