Flask-RESTful 我们可以在资源中 get 和 post 之前调用一个方法吗?

Art*_*ory 2 python flask flask-restful

我在我的应用程序中使用 Flask-RESTful。

我想在每个资源发布之前调用一个方法并获取,这样我的代码就不会重复。

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

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

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

    def post(self, **kwargs):
        # the same code as in get method
Run Code Online (Sandbox Code Playgroud)

我想在获取和发布之前进行方法调用,这样我的代码就不会重复。

我有什么办法可以做到这一点吗?

Vig*_* R. 5

尝试编写一个装饰器函数并将其与您的get()post()方法一起使用。更多信息请点击这里

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

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

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
Run Code Online (Sandbox Code Playgroud)

然后,在代码中使用它就非常简单:

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
Run Code Online (Sandbox Code Playgroud)