只需
request在装饰器中使用全局上下文即可。 在任何请求中 都可用。
from functools import wrapsfrom flask import ( current_app, jsonify, request,)def validate_json(f): @wraps(f) def wrapper(*args, **kw): try: request.json except BadRequest, e: msg = "payload must be a valid json" return jsonify({"error": msg}), 400 return f(*args, **kw) return wrapperdef validate_schema(schema_name): def decorator(f): @wraps(f) def wrapper(*args, **kw): try: validate(request.json, current_app.config[schema_name]) except ValidationError, e: return jsonify({"error": e.message}), 400 return f(*args, **kw) return wrapper return decorator应用这些装饰 前 应用
@route装饰; 您要注册包装功能,而不是路由的原始功能:
@app.route('/activate', methods=['POST'])@validate_json@validate_schema('activate_schema')def activate(): input = request.json


