我在应用中使用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之前进行方法调用,以使我的代码不会重复。
有什么办法可以做到吗?
答案 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