Python 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

我刚刚完成我的python烧瓶101。一切顺利,现在我已经成功运行flask服务器

但是,现在我想添加另一个rest端点
/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
方法,另一方面,如果您有很多公共页面。你可以用装饰器