よくある質問—ドキュメントのリクエスト

提供:Dev Guides
< RequestsRequests/docs/latest/community/faq
移動先:案内検索

よくある質問

ドキュメントのこの部分は、リクエストに関する一般的な質問に答えます。

エンコードされたデータ?

リクエストはgzipでエンコードされた応答を自動的に解凍し、可能な場合は応答コンテンツをUnicodeにデコードするために最善を尽くします。

brotli または brotlicffi パッケージのいずれかがインストールされている場合、リクエストはBrotliでエンコードされた応答もデコードします。

必要に応じて、生の応答(さらにはソケット)に直接アクセスできます。


カスタムユーザーエージェント?

リクエストを使用すると、他のHTTPヘッダーとともにUser-Agent文字列を簡単にオーバーライドできます。 ヘッダーに関するドキュメントを参照してください。


なぜHttplib2ではないのですか?

クリスアダムスはハッカーニュースで素晴らしい要約をしました:

httplib2は、リクエストを使用する必要がある理由の一部です。クライアントとしてははるかに立派ですが、十分に文書化されておらず、基本的な操作にはコードが多すぎます。 httplib2がやろうとしていること、最新のHTTPクライアントの構築には非常に低レベルの煩わしさがたくさんあることを感謝しますが、実際には、代わりにリクエストを使用するだけです。 ケネス・ライツは非常にやる気があり、単純なものが単純であるべき程度を理解していますが、httplib2は、生産システムを構築するために人々が使用すべきものというよりも、学術的な演習のように感じます[1]。

開示:私はrequests AUTHORSファイルにリストされていますが、その素晴らしさの約0.0001 % o fのクレジットを要求できます。

1. http://code.google.com/p/httplib2/issues/detail?id=96 は良い例です:多くの人に影響を与える厄介なバグ、何ヶ月も利用可能な修正がありましたが、それはうまくいきましたフォークに適用して数TBのデータを叩いたときは素晴らしいのですが、トランクに入れるのに1年以上かかり、「httplib2」を必要とする他のプロジェクトが機能するPyPIに入れるのにさらに長い時間がかかりました。バージョン。


Python 3サポート?

はい! Requestsは、Python 2.7&3.6 +およびPyPyを公式にサポートしています。


Python 2サポート?

はい! Python2.7のサポートを sunset する予定はありません。 さまざまなニーズを持つ大規模なユーザーベースがあることを理解しており、 pipがPython2.7のサポートを停止するまで(まだ推定日はありません)、リクエスト内でPython2.7のサポートを維持する予定です。

とはいえ、2020年1月1日をもってPython 2.7はバグ修正やセキュリティ更新を受け取らなくなったため、強く推奨されるユーザーはPython3.6以降に移行することをお勧めします。


「ホスト名が一致しません」エラーとは何ですか?

これらのエラーは、 SSL証明書の検証が、サーバーがホスト名に応答する証明書と一致しない場合に発生します。リクエストは接続していると見なします。 サーバーのSSL設定が正しいことが確実で(たとえば、ブラウザーでサイトにアクセスできるため)、Python 2.7を使用している場合は、Server-Name-Indicationが必要であると考えられます。

Server-Name-Indication 、またはSNIは、SSLの公式拡張機能であり、クライアントはサーバーに接続しているホスト名を通知します。 これは、サーバーが仮想ホスティングを使用している場合に重要です。 このようなサーバーが複数のSSLサイトをホストしている場合、クライアントが接続しているホスト名に基づいて適切な証明書を返すことができる必要があります。

Python3およびPython2.7.9 +では、SSLモジュールにSNIのネイティブサポートが含まれています。 Python <2.7.9のリクエストでSNIを使用する方法については、こちらを参照してください StackOverflowの回答