2017-03-28 12 views
0

私たちのサービスの1つと話すための残りのAPIクライアントを作成しようとしています。すべてのリクエストには、エポック時間、リクエスト動詞、データ、パスなどの妥協の必要なオーソライゼーションヘッダを含める必要があります。自動的にヘッダをPythonリクエストリクエストに追加する

私はpythonリクエストモジュールを可能な限りシームレスに使用しようとしていますが、すべての要求にヘッダーを挿入します。

リクエストに「フック」という概念があるようですが、現在は「応答」フックしかありません。

セッションオブジェクトを拡張し、 "send"メソッドをオーバーライドし、ヘッダーを追加してから、それをsuper(Session.send)メソッドに渡すことを検討していました。それはOOPと継承に来るとき

マイPythonは素晴らしいではありませんが、これは私は私はあなたが既に上書きしているので、あなたは、sendメソッドをオーバーライドする必要はありません推測

class MySession(Session): 
    def __init__(self, access_id=None, access_key=None): 
     self.access_id = access_id 
     self.access_key = access_key 
     super(MySession, self).__init__() 

    def send(self, request, **kwargs): 
     method = request.method 
     path = urlparse(request.url).path 

     request.headers['Authorization'] = self.__create_security_header(method, path) 
     request.headers['Content-Type'] = "application/json" 

     return Session.send(self, request, **kwargs) 

答えて

0

を試してきたものです__init__

class MySession(Session): 

    def __init__(self, access_id=None, access_key=None): 
     super(MySession, self).__init__() 
     self.access_id, self.access_key = access_id, access_key 

     # provided __create_security_header method is defined 
     self.headers['Authorization'] = self.__create_security_header(method, path) 
     self.headers['Content-Type'] = "application/json" 

おそらくそうするはずです。

+0

ただし、リクエストごとに新しいヘッダーが作成されますか?ヘッダーはメソッド、uriなどのハッシュであるため、要求が送信される直前に生成する必要があります。 –

関連する問題