对 Morepath 的 JSON 模式支持
项目描述
more.jsonschema:对 Morepath 的 JSON 模式支持
这个包为JSON Schema提供了 Morepath 集成,用jsonschema实现:
JSON Schema 可以在 HTTP API 中自动验证用户输入。
架构
JSON 模式需要加载到 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集成有助于在将请求主体发布到视图时对其进行验证。首先我们必须为我们的模式创建一个加载器:
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。您甚至可以创建自己的验证器或扩展现有的验证器。只需将 Validator 传递给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异常。
此异常对象具有带有验证错误的错误属性。您必须为其定义一个异常视图,否则验证错误将作为“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 设为默认验证器。
添加黑色代码格式化程序的集成。
0.1 (2017-03-17)
首次公开发布。
项目详情
more.jsonschema -0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d2e2b23fa78940f8897947847930adc6bb2a76e905a905529397184e582c5657 |
|
MD5 | 4484f7e52951ad5b86a5311d83203399 |
|
布莱克2-256 | 1606a59832bbabe632916f6868c3e93a441708d27025b8be044cbecbf485abcd |
more.jsonschema -0.2-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 560b7e35e1e5982a097ca254ec06ee595c1fdbfe110a60092a10f2475ed3ae67 |
|
MD5 | f4cc80bd4833c1eefd9e07357658151b |
|
布莱克2-256 | 167cf850583599a01ebe2f0fc6c98fc4a4c0167c65ef156ca0279962905fcece |