python开发接口时,使用jsonschema模块对数据进行校验
2022/2/7 11:12:59
本文主要是介绍python开发接口时,使用jsonschema模块对数据进行校验,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import jsonschema schema = { "type": "object", # 先声明每个键都是对象 "properties": { # 声明每个键对应的值的类型 "version_no": {"type": "string"}, "versions": { "type": "array", # 如果键对应的值是列表数据类型,则需要声明类型为array,然后再声明列表里面的键对应的值 "minItems": 1, "items": { "type": "object", # 字典对象 "required": ["name", "type"], # 必填字段 "properties": { # 声明键对应的值的类型约束等 "name": { "type": "string", "minLength": 1 }, "type": { "type": "string", "enum": ["python", "java"] }, "size": { "type": "number", # 整型对应的是integer }, } } }, }, "required": ["version_no", "versions"] # 最外围的键的约束 } data = { "version_no": "x123", "versions": [ { "name": "jack", "type": "python", "size": 123 }, { "name": "will", "type": "java", } ] } def schema_check(data, schema): try: jsonschema.validate(date, schema) print("data中的数据通过自定义的json schema校验") except jsonschema.exceptions.ValidationError as e; print(e.message, "data数据没有通过schema格式校验") if __name__ == '__main__': schema_check(data, schema) # 装饰器版 from jsonschema import ValidationError, validate from .exceptions import InvalidJSON def json_schema_validate(schema, is_get=False): def validate_func(func): def _func(self, request, *args, **kwargs): try: if not is_get: validate(request.data, schema) else: validate(request.query_params, schema) except ValidationError as e: logger.exception('Invalid jsonschema') raise InvalidJSON(e) from e else: return func(self, request, *args, **kwargs) return _func return validate_func @json_schema_validate({ "type": "object", # 先声明每个键都是对象 "properties": { # 声明每个键对应的值的类型 "version_no": {"type": "string"}, "versions": { "type": "array", # 如果键对应的值是列表数据类型,则需要声明类型为array,然后再声明列表里面的键对应的值 "minItems": 1, "items": { "type": "object", # 字典对象 "required": ["name", "type"], # 必填字段 "properties": { # 声明键对应的值的类型约束等 "name": { "type": "string", "minLength": 1 }, "type": { "type": "string", "enum": ["python", "java"] }, "size": { "type": "number", # 整型对应的是integer }, } } }, }, "required": ["version_no", "versions"] # 最外围的键的约束 }) def post(self, request): ....
这篇关于python开发接口时,使用jsonschema模块对数据进行校验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04React 19 来了!新的编译器简直太棒了!
- 2025-01-032025年Node.js与PHP大比拼:挑选最适合的后端技术进行现代web开发
- 2025-01-03?? 用 Gemini API、Next.js 和 TailwindCSS 快速搭建 AI 推文生成项目 ??
- 2024-12-31Vue CLI多环境配置学习入门
- 2024-12-31Vue CLI学习入门:一步一步搭建你的第一个Vue项目
- 2024-12-31Vue3公共组件学习入门:从零开始搭建实用组件库
- 2024-12-31Vue3公共组件学习入门教程
- 2024-12-31Vue3学习入门:新手必读教程
- 2024-12-31Vue3学习入门:初学者必备指南
- 2024-12-30Vue CLI多环境配置教程:轻松入门指南