Python rest端点的拦截器或筛选器
我刚刚完成我的python烧瓶101。一切顺利,现在我已经成功运行flask服务器 但是,现在我想添加另一个rest端点Python rest端点的拦截器或筛选器,python,python-3.x,flask,flask-restful,Python,Python 3.x,Flask,Flask Restful,我刚刚完成我的python烧瓶101。一切顺利,现在我已经成功运行flask服务器 但是,现在我想添加另一个rest端点/products,在这种情况下,它应该返回产品的示例列表。由于它是一个基于jwt的实现,我想确保用户请求在执行之前被/status或/authapi拦截 有没有一种方法可以重用当前的实现,而不是为新的rest端点再次复制粘贴整个实现?有两种方法可以做到这一点 第一个有点含蓄。可以指定应该在请求之前和之后调用的方法 @app.before_request def authent
/products
,在这种情况下,它应该返回产品的示例列表。由于它是一个基于jwt
的实现,我想确保用户请求在执行之前被/status
或/auth
api拦截
有没有一种方法可以重用当前的实现,而不是为新的rest端点再次复制粘贴整个实现?有两种方法可以做到这一点 第一个有点含蓄。可以指定应该在请求之前和之后调用的方法
@app.before_request
def authenticate():
# logic for verifying tokens
pass
将为每个路由调用authenticate函数
文件
另一方面,您可以创建视图装饰器:
from functools import wraps
def requires_auth(view):
@wraps(view)
def decorated(*args, **kwargs):
# logic for verifying tokens
return view(*args, **kwargs)
return decorated
然后你可以包装任何应该用这个装饰器保护的视图,例如
@requires_auth
@app.route('/myroute')
def my_route():
# Normal logic for view
pass
这取决于您的用例,如果您的Flask应用程序是一个API,其中大多数视图都受到保护,那么您可以使用
。before\u request
方法,另一方面,如果您有很多公共页面。您可以使用装饰器。有两种方法可以做到这一点
第一个有点含蓄。可以指定应该在请求之前和之后调用的方法
@app.before_request
def authenticate():
# logic for verifying tokens
pass
将为每个路由调用authenticate函数
文件
另一方面,您可以创建视图装饰器:
from functools import wraps
def requires_auth(view):
@wraps(view)
def decorated(*args, **kwargs):
# logic for verifying tokens
return view(*args, **kwargs)
return decorated
然后你可以包装任何应该用这个装饰器保护的视图,例如
@requires_auth
@app.route('/myroute')
def my_route():
# Normal logic for view
pass
这取决于您的用例,如果您的Flask应用程序是一个API,其中大多数视图都受到保护,那么您可以使用。before\u request
方法,另一方面,如果您有很多公共页面。你可以用装饰器