如何解决使用装饰器重新授权Python请求
我有一个类,其中包含几个都可以发出API请求的方法调用。我遇到的问题是,在进行所有调用之前,我的授权令牌已过期,我需要重新授权。我不知道我的授权调用将在哪个API调用上超时,因此我必须在每个API调用上添加一个检查。
一种选择是在每个API调用之后添加检查,以查看是否收到401响应,然后重新授权并重试我的API调用,但是我想找到一种比在每个API调用中重复代码更好的方法。 / p>
我还考虑了一种通用方法,可以在请求中传递信息,但是由于我的请求是如此不同,我最终几乎对每个调用都做出特殊情况。
理想情况下,我将能够使用装饰器来捕获是否存在授权异常,重新授权并重试响应。看起来像这样:
Class ClassA(object):
def __init__(self,token,api_data,more_api_info):
self.token = token
self.api_data = api_data
self.more_api_info = more_api_info
Class ClassB(object):
def run_the_methods(self,ClassA):
self.do_auth(ClassA)
self.do_api_call(ClassA)
self.do_another_api_call(ClassA)
def renew_auth(f):
def wrapper(self,*args,**kwargs):
try:
return f
except:
self.do_auth(ClassA)
return f
def do_auth(self,ClassA):
#get new token
ClassA.token = token
@renew_auth
def do_api_call(self,ClassA):
#use my auth to do request
#if response.status_code == 401:
#raise Exception
@renew_auth
def do_another_api_call(self,ClassA):
#use my auth to do request
#if response.status_code == 401:
#raise Exception
是否可以通过这种方式使用装饰器?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。