import functools
from flask import request
from marshmallow import Schema, ValidationError
from fullstack.response import ResponseCode, response_result
from app.setting import config
def validate_schema(schema_class: Schema):
def decorator(view_func):
@functools.wraps(view_func)
def inner(*args, **kwargs):
if request.method == 'GET':
form_data = request.args
else:
if request.json:
form_data = request.json
else:
form_data = request.form
try:
data = schema_class().load(form_data)
request.schema_data = data
except ValidationError as e:
if config['DEBUG']:
return response_result(ResponseCode.PARAMETER_ERROR, e.messages if config['DEBUG'] else None)
return view_func(*args, **kwargs)
return inner
return decorator
-
wanli authorede339fd7a