Ich habe eine Reihe von Funktionen, die Anrufe an eine API mit requests tätigen. So eine Anzahl von Anrufen ähnlich derjenige unten (für dieses Beispiel vereinfacht):Der beste Weg, um alle Anfragen zu authentifizieren?
requests.get(url, data=data, auth=('user','password'))
Alle Anforderungen authentifiziert werden werden, und ich möchte eine sauberere Weg finden, alle Anfragen zu authentifizieren und nicht nur mit der auth=('user','password')
Teil in jedem Anruf.
Mein erster Gedanke war, eine Unterklasse zu erstellen, die von der requests
Klasse erbt und dann die get
Funktion überschreiben. So etwas wie unten:
class authRequests(requests):
def get(url, data):
return requests.get(url, data=data, auth=('user', 'password'))
und verwenden Sie dann authRequests.get
statt requests.get
. Ich habe keine Python-Erfahrung, also mag das kein funktionierendes Beispiel sein, aber ich frage mich, ob dies der richtige Ansatz ist oder ob ich eine andere Methode dafür verwenden sollte?
Ahh bietet - so, wenn ich 15 Funktionen, die Anrufe zu 'get' enthalten könnte ich alle Funktionen einfach wickeln mit dem' with' Aussage ? –
@AbeMiessler yup, Sie müssen nicht 'mit' Kontextmanager verwenden, können ein Sitzungsobjekt instanziieren und es weitergeben. Wenn die Funktionen Methoden derselben Klasse sind, können Sie die Sitzung als Instanzattribut instanziieren: 'self.session = requests.Session()' und verwenden Sie sie, um Anfragen zu erstellen 'self.session.get (url, data = data) "... das hilft mir. – alecxe
Schön - danke !!! –