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模块对数据进行校验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-27使用js将ETH账户的资产打散其他账户web3
- 2024-09-27我轻松地将我的 React.js 应用程序翻译成了多种语言。下面是我是如何做到的... ??
- 2024-09-27?? 使用 useMemo 和 useCallback 加速 React:告别缓慢的重新渲染!??
- 2024-09-27Vue CLI多环境配置教程:新手入门指南
- 2024-09-27Vue CLI多环境配置教程:快速入门指南
- 2024-09-27Vue CLI教程:新手入门指南
- 2024-09-27Vue CLI教程:初学者快速入门指南
- 2024-09-27Vue3公共组件教程:入门与实践
- 2024-09-27Vue3公共组件教程:新手入门指南
- 2024-09-27Vue3教程:初学者快速入门指南