from flask import jsonify from functools import wraps from tools.api_response import APIResponse def route(bp, *args, **kwargs): # 路由设置,统一返回格式 # :param bp: 蓝图 # :param args: # :param kwargs: # :return: kwargs.setdefault('strict_slashes', False) def decorator(f): @bp.route(*args, **kwargs) @wraps(f) def wrapper(*args, **kwargs): result = f(*args, **kwargs) base = APIResponse(result) rv = base.body() # 响应函数返回整数和浮点型 if isinstance(rv, (int, float, str)): return jsonify(rv) # 响应函数返回元组 elif isinstance(rv, tuple): # 判断是否为多个参数 if len(rv) >= 3: return jsonify(rv[0]), rv[1], rv[2] else: return jsonify(rv[0]), rv[1] # 响应函数返回字典 elif isinstance(rv, dict): return jsonify(rv) # 响应函数返回字节 elif isinstance(rv, bytes): rv = rv.decode('utf-8') return jsonify(rv) else: return jsonify(rv) return f return decorator