2
私はrequestsを使ってAPIを呼び出す関数をいくつか持っています。だから、類似した呼の数(この例では単純化)下記1:すべてのリクエストを認証する最も良い方法は?
requests.get(url, data=data, auth=('user','password'))
要求のすべてが認証されるとしていると私はすべての要求を認証するためにクリーンな方法を見つけたいだけではなく含みますすべてのコールで部分。
私の最初の考えは、requests
クラスから継承し、get
関数をオーバーライドするサブクラスを作成することでした。以下のような何か:その後、
class authRequests(requests):
def get(url, data):
return requests.get(url, data=data, auth=('user', 'password'))
とauthRequests.get
の代わりrequests.get
を使用しています。私はトンのpythonの経験を持っていないので、これは実際の例ではないかもしれませんが、これが正しいアプローチかどうか、あるいはこれを行うために別の方法を使用する必要があるのだろうかと思います。
面白いああにデータを提供することによって行われ - ので、私は 'GET'への呼び出しが含まれている15個の機能を持っている場合、私はちょうど' WITH'文ですべての機能をラップすることができ? –
@AbeMiesslerあなたは 'with'コンテキストマネージャを使う必要はなく、セッションオブジェクトをインスタンス化して渡すことができます。関数が同じクラスのメソッドである場合、セッションをインスタンス属性としてインスタンス化することができます: 'self.session = requests.Session()'とそれを使って 'self.session.get(url、data = data) '..それが助けてくれることを望みます。 – alecxe
美しい - ありがとう! –