Python 如何在Flask中设置请求的属性
通过使用Java开发,我能够在传递给处理程序的Python 如何在Flask中设置请求的属性,python,flask,Python,Flask,通过使用Java开发,我能够在传递给处理程序的请求(servlet API)实例中附加自定义属性 现在,在Flask(Python)中,我们得到一个全局请求对象,其中包含特定请求的详细信息。我有一个@app.before_request装饰程序,它需要基于给定的API令牌创建一个自定义用户对象,并将其附加到要由目标处理程序访问的请求 @app.before_request def check_api(): if 'Authorization' in request.headers:
请求(servlet API)实例中附加自定义属性
现在,在Flask(Python)中,我们得到一个全局请求对象,其中包含特定请求的详细信息。我有一个@app.before_request
装饰程序,它需要基于给定的API令牌创建一个自定义用户对象,并将其附加到要由目标处理程序访问的请求
@app.before_request
def check_api():
if 'Authorization' in request.headers:
token = request.headers['Authorization']
if token:
user = verify_and_get_user(token)
request['user'] = user
@app.route('/resources/create', methods=['POST'])
def create_resource():
print('- User with id %s created a resource' % request['user'].id)
如何以线程安全的方式执行上述操作?您可以使用g
全局命名空间对象在请求期间存储和共享资源。更多细节
您必须首先从flask import g导入它:
您可以找到一些使用示例。我认为您不必划分代码,您可以在下面的路由函数中执行所有操作,并检查所需条件是否存在,如果不存在,您可以执行返回操作error@AxelAnaya我之所以添加before过滤器是因为我知道我会有很多路由处理程序,这意味着重复的代码。相反,我宁愿让这个方法来处理这个问题。另外,这意味着如果客户机没有提供有效的API令牌,我可以从中返回403
,而不会到达目标处理程序。