【发布时间】:2020-07-24 07:59:32
【问题描述】:
我有一个简单的 Flask 应用程序,我想用这样的装饰器验证 json 格式的请求:
def validate_request(*expected_args):
"""
Validate requests decorator
"""
# print('=======================ENTER VALIDATE_REQUEST================')
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
json_obj = request.get_json()
for expected_arg in expected_args:
if expected_arg not in json_obj or json_obj.get(expected_arg) is None:
return api_response({'error': f"You must call with all request params: {', '.join(expected_args)}"})
return func(*args, **kwargs)
return wrapper
return decorator
在路线方面是这样的:
@user_api.route('/login', methods=['POST'])
@validate_request('email', 'password')
def login():
req_data = request.get_json()
......................
我的问题是为什么我调用'/login'路由时没有显示装饰器的PRINT语句?
只有在我启动服务器(flask 运行)时才会记录该消息。
谢谢。
【问题讨论】: