python - Python烧瓶json模式验证
问题描述
我在我的新项目中使用了烧瓶框架。它将从帖子中获取 JSON 数据并发送 JSON 响应。所以,我需要验证我的 JSON 请求。我看过几个图书馆。但是这些库没有按预期工作。最后,我决定使用 flask-jsonschema-validator。它适用于单个 JSON 对象。如果请求对象有嵌套对象,则它不起作用。例如,
from flask_jsonschema_validator import JSONSchemaValidator
JSONSchemaValidator(app=app, root="schemas")
这是我对验证器的初始化。
# If any error occurred in the request.
@app.errorhandler(jsonschema.ValidationError)
def json_validation_error(e):
return json_response("error", str(e), {})
这是我的错误处理程序
@app.validate('model', 'save') def save_model():
这是我的实现。
{
"save": {
"type": "object",
"properties": {
"workspace": {"type": "object"},
"name": {"type": "string"},
"description": {"type": "string"},
"uri": {"type": "string"},
"type": {
"name": {"type": "string"},
}
},
"required": [ "workspace", "name", "description", "uri", "type"]
}
}
这是我的 model.json 文件。它正在验证除“类型”之外的请求。如何使用嵌套对象对 JSON 请求应用验证
请帮助任何人解决此问题
提前致谢。
解决方案
flask-expects-json包检查嵌套对象的变量类型。
它在您的路线上充当装饰器。
SCHEMA = {
"type": "object",
"properties": {
"workspace": {"type": "object"},
"name": {"type": "string"},
"description": {"type": "string"},
"uri": {"type": "string"},
"type": {
"type": "object",
"properties": {
"name": {"type": "string"},
}
}
},
"required": ["workspace", "name", "description", "uri", "type"]
}
@expects_json(SCHEMA)
def my_route(self, **kwargs):
pass
推荐阅读
- wordpress - 搜索自定义帖子类型会显示该帖子类型中的所有帖子
- python - TypeError: 输入类型不支持 ufunc 'bitwise_and' - 根据转换规则 ''safe'' 支持的类型
- html - 我可以删除屏幕阅读器提示并保留占位符文本吗
- node.js - Docker compose,从另一个容器访问 Postgres 容器
- xamarin - MvvmCross 升级到 8.x 后,应用程序卡在 SplashScreen
- web-deployment - 计算 FME 服务器应用程序中的点击次数
- javascript - 单击 parent.vue 中的按钮后触发 child.vue 中的功能
- javascript - 使用 jquery 将 CSS 更改回默认值的问题
- tensorflow2.0 - 在 Tenorflow 2 中为度量函数重塑模型输出
- kdb - 在 KDB 中,是否有 numpy 的 array.shape 等价物?