Мой вопрос касается, в частности, Microsoft Graph API, но приветствуется более широко применимое решение.
У меня есть сеанс, созданный следующим образом:
# Token acquisition code left out
session = OAuth2Session(token=token)
HTTP-запросы с этим сеанс выглядит следующим образом:
# List files in OneDrive
response = session.get("https://graph.microsoft.com/v1.0/me/drive/root/children")
Можно ли установить базовый URL, чтобы я мог пропустить base_url
каждый раз? Я хотел бы иметь возможность сделать вызов следующим образом:
# List files in OneDrive
response = session.get("me/drive/root/children")
Я смог сделать это путем создания подкласса OAuth2Session
и перегрузки метода Session.request()
, но это кажется мне неправильным подходом.
# Bad hack
class GraphSession (OAuth2Session):
def request(self, *args, **kwargs):
if len(args) > 1: # url as non-kw arg
args = list(args) # can't assign to a tuple
args[1] = 'https://graph.microsoft.com/v1.0/' + args[1]
else: # url must be a kw arg
kwargs['url'] = 'https://graph.microsoft.com/v1.0/' + kwargs['url']
return super(GraphSession, self).request(*args, **kwargs)