Morepath的JSON Schema支持
项目描述
more.jsonschema: 为Morepath提供JSON Schema支持
此包提供对JSON Schema的Morepath集成,使用jsonschema实现
JSON Schema可以自动化HTTP API中的用户输入验证。
模式
需要将JSON schema加载到Python字典中(您可以使用json.load())
user_schema = {
'type': 'object',
'properties': {
'name': {
'type': 'string',
'minLength': 3
},
'age': {
'type': 'integer',
'minimum': 10
}
},
'required': ['name', 'age']
}
如果您想在Python中定义JSON模式,可以使用jsl等工具。
验证
more.jsonschema的集成有助于在请求体被POST到一个视图时进行验证。首先,我们必须为我们自己的模式创建一个加载器
from more.jsonschema import loader
user_schema_load = loader(user_schema)
我们可以使用这个加载器来处理POST请求,例如
@App.json(model=User, request_method='POST', load=user_schema_load)
def user_post(self, request, json):
# json is now a validated and normalized dict of whatever got
# POST onto this view that you can use to update
# self
自定义验证器
默认情况下,more.jsonschema使用Draft7Validator。但您也可以使用Draft3Validator、Draft4Validator或Draft6Validator。您甚至可以创建自己的验证器或扩展现有的验证器。只需将验证器传递给loader
from jsonschema import Draft4Validator
from more.jsonschema import loader
user_schema_load = loader(user_schema, validator=Draft4Validator)
有关创建或扩展验证器类的更多信息,请参阅jsonschema文档。
错误处理
如果由于验证错误(例如,缺少必需字段或字段类型错误)导致验证失败,您希望显示某种错误消息。当出现错误时,more.jsonschema创建的load函数会引发more.jsonschema.ValidationError异常。
此异常对象有一个包含验证错误的errors属性。您必须为它定义一个异常视图,否则验证错误将作为“500内部服务器错误”返回给API用户。
此软件包提供了一个默认的异常视图实现。如果您从more.jsonschema.JsonSchemaApp派生您的应用程序,则您会获得一个默认的错误视图,用于处理ValidationError,该视图具有422状态代码和错误消息
from more.jsonschema import JsonSchemaApp
class App(JsonSchemaApp):
pass
现在,您的应用程序已经内置了合理的错误处理。
变更记录
0.2 (2020-04-26)
已删除:删除了对Python 2以及Python 3.4和3.5的支持。
如果您想使用此版本,必须升级到Python 3。
添加了对Python 3.6、3.7和3.8以及PyPy 3.6的支持。
将Python 3.7设为默认测试环境。
将jsonschema升级到版本3.2.0。
将JSON Schema Draft 7设为默认验证器。
添加了对Black代码格式化器的集成。
0.1 (2017-03-17)
首次公开发布。
项目详情
more.jsonschema-0.2.tar.gz的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d2e2b23fa78940f8897947847930adc6bb2a76e905a905529397184e582c5657 |
|
MD5 | 4484f7e52951ad5b86a5311d83203399 |
|
BLAKE2b-256 | 1606a59832bbabe632916f6868c3e93a441708d27025b8be044cbecbf485abcd |
更多.jsonschema-0.2-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 560b7e35e1e5982a097ca254ec06ee595c1fdbfe110a60092a10f2475ed3ae67 |
|
MD5 | f4cc80bd4833c1eefd9e07357658151b |
|
BLAKE2b-256 | 167cf850583599a01ebe2f0fc6c98fc4a4c0167c65ef156ca0279962905fcece |