Flask-RESTful是否可以在Ressource中获取和发布之前调用方法?

时间:2019-02-07 10:35:03

标签: python flask flask-restful

我在应用中使用Flask-RESTful。

我想在每个Ressource帖子之前调用一个方法,然后获取,这样我的代码就不会重复。

所以基本上这就是我所拥有的:

class SomeClass(Resource):
    def __init__():
        # Some stuff

    def get(self, **kwargs):
        # some code

    def post(self, **kwargs):
        # the same code as in get method

我想在get和post之前进行方法调用,以使我的代码不会重复。

有什么办法可以做到吗?

1 个答案:

答案 0 :(得分:3)

尝试编写装饰器函数,并将其与get()post()方法一起使用。更多信息here

装饰器更像是函数的包装器,其中将函数包装在返回函数的函数中。

说,您想在处理之前进行一些验证,可以编写这样的装饰器:

from functools import wraps

def validate(actual_method):
    @wraps(actual_method)  # preserves signature
    def wrapper(*args, **kwargs):
        # do your validation here

        return actual_method(*args, **kwargs)

    return wrapper

然后,在您的代码中使用它就很简单:

class SomeClass(Resource):
    def __init__():
        # Some stuff

    @validate
    def get(self, **kwargs):
        # some code

    @validate
    def post(self, **kwargs):
        # the same code as in get method