開発者インターフェース
ドキュメントのこの部分は、リクエストのすべてのインターフェースをカバーしています。 リクエストが外部ライブラリに依存している部分については、ここで最も重要なドキュメントを作成し、正規のドキュメントへのリンクを提供します。
メインインターフェース
リクエストのすべての機能には、これらの7つの方法でアクセスできます。 それらはすべて、 Response オブジェクトのインスタンスを返します。
- requests.request(method, url, **kwargs)
リクエストを作成して送信します。
- パラメーター
method –新しい Request オブジェクトのメソッド:
GET
、OPTIONS
、HEAD
、POST
、[ X106X] 、PATCH
、またはDELETE
。url –新しい Request オブジェクトのURL。
params –(オプション)辞書、 Request のクエリ文字列で送信するタプルまたはバイトのリスト。
data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。
json –(オプション) Request の本文で送信するJSONシリアル化可能なPythonオブジェクト。
headers –(オプション) Request で送信するHTTPヘッダーの辞書。
Cookies –(オプション) Request で送信するDictまたはCookieJarオブジェクト。
ファイル –(オプション)マルチパートエンコーディングアップロード用の
'name': file-like-objects
(または{'name': file-tuple}
)の辞書。file-tuple
は、2タプル('filename', fileobj)
、3タプル('filename', fileobj, 'content_type')
、または4タプル('filename', fileobj, 'content_type', custom_headers)
にすることができます。ここで、'content-type'
は文字列です。指定されたファイルのコンテンツタイプを定義し、custom_headers
ファイルに追加する追加のヘッダーを含むdictのようなオブジェクトを定義します。auth –(オプション)基本/ダイジェスト/カスタムHTTP認証を有効にするための認証タプル。
timeout ( float または tuple )–(オプション)サーバーがデータを送信するのを待つ秒数。フロート、または(接続タイムアウト、読み取りタイムアウト)タプル。
allow_redirects ( bool )–(オプション)ブール値。 GET / OPTIONS / POST / PUT / PATCH / DELETE / HEADリダイレクトを有効/無効にします。 デフォルトは
True
です。プロキシ –(オプション)プロキシのURLへの辞書マッピングプロトコル。
verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用する場合はCAバンドルへのパスである必要があります)。 デフォルトは
True
です。stream –(オプション)
False
の場合、応答コンテンツはすぐにダウンロードされます。cert –(オプション)文字列の場合、sslクライアント証明書ファイル(.pem)へのパス。 タプルの場合、( 'cert'、 'key')ペア。
- 戻り値
応答オブジェクト
- リターンタイプ
使用法:
>>> import requests >>> req = requests.request('GET', 'https://httpbin.org/get') >>> req <Response [200]>
- requests.head(url, **kwargs)
- HEADリクエストを送信します。
- パラメーター
- ;;* url –新しい Request オブジェクトのURL。
- ** kwargs –
request
が取るオプションの引数。 allow_redirects が指定されていない場合、 False に設定されます(デフォルトの request の動作とは対照的です)。
- ** kwargs –
- 戻り値
- 応答オブジェクト
- リターンタイプ
- requests.Response
- requests.get(url, params=None, **kwargs)
- GETリクエストを送信します。
- パラメーター
- ;;* url –新しい Request オブジェクトのURL。
- params –(オプション)辞書、 Request のクエリ文字列で送信するタプルまたはバイトのリスト。
- ** kwargs –
request
が取るオプションの引数。
- 戻り値
- 応答オブジェクト
- リターンタイプ
- requests.Response
- requests.post(url, data=None, json=None, **kwargs)
- POSTリクエストを送信します。
- パラメーター
- ;;* url –新しい Request オブジェクトのURL。
- 戻り値
- 応答オブジェクト
- リターンタイプ
- requests.Response
- requests.put(url, data=None, **kwargs)
- PUTリクエストを送信します。
- パラメーター
- ;;* url –新しい Request オブジェクトのURL。
- 戻り値
- 応答オブジェクト
- リターンタイプ
- requests.Response
- requests.patch(url, data=None, **kwargs)
- PATCHリクエストを送信します。
- パラメーター
- ;;* url –新しい Request オブジェクトのURL。
- 戻り値
- 応答オブジェクト
- リターンタイプ
- requests.Response
- requests.delete(url, **kwargs)
- DELETEリクエストを送信します。
- パラメーター
- ;;* url –新しい Request オブジェクトのURL。
- ** kwargs –
request
が取るオプションの引数。
- ** kwargs –
- 戻り値
- 応答オブジェクト
- リターンタイプ
- requests.Response
例外
- exception requests.RequestException(*args, **kwargs)
- リクエストの処理中に発生したあいまいな例外がありました。
- exception requests.ConnectionError(*args, **kwargs)
- 接続エラーが発生しました。
- exception requests.HTTPError(*args, **kwargs)
- HTTPエラーが発生しました。
- exception requests.URLRequired(*args, **kwargs)
- リクエストを行うには、有効なURLが必要です。
- exception requests.TooManyRedirects(*args, **kwargs)
- リダイレクトが多すぎます。
- exception requests.ConnectTimeout(*args, **kwargs)
リモートサーバーに接続しようとしたときに、要求がタイムアウトしました。
このエラーが発生したリクエストは、安全に再試行できます。
- exception requests.ReadTimeout(*args, **kwargs)
- サーバーは、割り当てられた時間内にデータを送信しませんでした。
- exception requests.Timeout(*args, **kwargs)
要求がタイムアウトしました。
このエラーをキャッチすると、 ConnectTimeout エラーと ReadTimeout エラーの両方がキャッチされます。
セッションのリクエスト
- class requests.Session
リクエストセッション。
Cookieの永続性、接続プール、および構成を提供します。
基本的な使用法:
>>> import requests >>> s = requests.Session() >>> s.get('https://httpbin.org/get') <Response [200]>
またはコンテキストマネージャーとして:
>>> with requests.Session() as s: ... s.get('https://httpbin.org/get') <Response [200]>
- auth
Request にアタッチするデフォルトの認証タプルまたはオブジェクト。
- cert
SSLクライアント証明書のデフォルト(文字列の場合)、sslクライアント証明書ファイル(.pem)へのパス。 タプルの場合、( 'cert'、 'key')ペア。
- close()
すべてのアダプタを閉じ、セッションを閉じます
- cookies
このセッションで設定された現在未処理のすべてのCookieを含むCookieJar。 デフォルトでは RequestsCookieJar ですが、他の
cookielib.CookieJar
互換オブジェクトでもかまいません。
- delete(url, **kwargs)
DELETEリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
url –新しい Request オブジェクトのURL。
** kwargs –
request
が取るオプションの引数。
- リターンタイプ
- get(url, **kwargs)
GETリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
url –新しい Request オブジェクトのURL。
** kwargs –
request
が取るオプションの引数。
- リターンタイプ
- get_adapter(url)
指定されたURLに適切な接続アダプタを返します。
- リターンタイプ
- get_redirect_target(resp)
応答を受け取ります。 リダイレクトURIまたは
None
を返します
- head(url, **kwargs)
HEADリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
url –新しい Request オブジェクトのURL。
** kwargs –
request
が取るオプションの引数。
- リターンタイプ
- hooks
イベント処理フック。
- max_redirects
許可されるリダイレクトの最大数。 リクエストがこの制限を超えると、 TooManyRedirects 例外が発生します。 これはデフォルトでrequests.models.DEFAULT_REDIRECT_LIMITになります。これは30です。
- merge_environment_settings(url, proxies, stream, verify, cert)
環境を確認し、いくつかの設定とマージします。
- リターンタイプ
dict
- mount(prefix, adapter)
接続アダプタをプレフィックスに登録します。
アダプターは、プレフィックス長の降順でソートされます。
- options(url, **kwargs)
OPTIONSリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
url –新しい Request オブジェクトのURL。
** kwargs –
request
が取るオプションの引数。
- リターンタイプ
- params
各リクエストに添付するクエリ文字列データの辞書。 ディクショナリ値は、複数値のクエリパラメータを表すためのリストである場合があります。
- patch(url, data=None, **kwargs)
PATCHリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
- リターンタイプ
- post(url, data=None, json=None, **kwargs)
POSTリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
- リターンタイプ
- prepare_request(request)
送信用の PreparedRequest を作成し、それを返します。 PreparedRequest には、 Request インスタンスと Session の設定がマージされた設定があります。
- パラメーター
request – リクエストインスタンス。このセッションの設定で準備します。
- リターンタイプ
- proxies
辞書マッピングプロトコルまたはプロトコルとホストをプロキシのURLに(例: {'http': 'foo.bar:3128'、 'http://host.name': 'foo.bar:4012'})各リクエストで使用されます。
- put(url, data=None, **kwargs)
PUTリクエストを送信します。 Response オブジェクトを返します。
- パラメーター
- リターンタイプ
- rebuild_auth(prepared_request, response)
リダイレクトされるとき、資格情報の漏洩を避けるために、リクエストから認証を削除したい場合があります。 この方法では、資格情報の損失を回避するために、可能な場合は認証をインテリジェントに削除して再適用します。
- rebuild_method(prepared_request, response)
リダイレクトされるときに、特定の仕様またはブラウザの動作に基づいてリクエストの方法を変更したい場合があります。
- rebuild_proxies(prepared_request, proxies)
このメソッドは、環境変数を考慮してプロキシ構成を再評価します。 NO_PROXYでカバーされているURLにリダイレクトされた場合、プロキシ構成を削除します。 それ以外の場合は、このURLに欠落しているプロキシキーを設定します(以前のリダイレクトによって削除された場合)。
このメソッドは、必要に応じてProxy-Authorizationヘッダーも置き換えます。
- リターンタイプ
dict
- request(method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None)
Request を作成し、準備して送信します。 Response オブジェクトを返します。
- パラメーター
method –新しい Request オブジェクトのメソッド。
url –新しい Request オブジェクトのURL。
params –(オプション) Request のクエリ文字列で送信される辞書またはバイト。
data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。
json –(オプション) Request の本文で送信するjson。
headers –(オプション) Request で送信するHTTPヘッダーの辞書。
Cookies –(オプション) Request で送信するDictまたはCookieJarオブジェクト。
ファイル –(オプション)マルチパートエンコーディングアップロード用の
'filename': file-like-objects
の辞書。auth –(オプション)認証タプルまたは呼び出し可能で、基本/ダイジェスト/カスタムHTTP認証を有効にします。
timeout ( float または tuple )–(オプション)サーバーがデータを送信するのを待つ時間。 float、または(接続タイムアウト、読み取りタイムアウト)タプル。
allow_redirects ( bool )–(オプション)デフォルトでTrueに設定されています。
プロキシ –(オプション)辞書マッピングプロトコルまたはプロトコルとホスト名をプロキシのURLに。
stream –(オプション)応答コンテンツをすぐにダウンロードするかどうか。 デフォルトは
False
です。verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用する場合はCAバンドルへのパスである必要があります)。 デフォルトは
True
です。False
に設定すると、リクエストはサーバーから提示されたTLS証明書を受け入れ、ホスト名の不一致や期限切れの証明書を無視します。これにより、アプリケーションは中間者(MitM)攻撃に対して脆弱になります。 。 検証をFalse
に設定すると、ローカル開発またはテスト中に役立つ場合があります。cert –(オプション)文字列の場合、sslクライアント証明書ファイル(.pem)へのパス。 タプルの場合、( 'cert'、 'key')ペア。
- リターンタイプ
- resolve_redirects(resp, req, stream=False, timeout=None, verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs)
応答を受け取ります。 応答または要求のジェネレーターを返します。
- send(request, **kwargs)
指定されたPreparedRequestを送信します。
- リターンタイプ
- should_strip_auth(old_url, new_url)
リダイレクト時にAuthorizationヘッダーを削除するかどうかを決定します
- stream
ストリーム応答コンテンツのデフォルト。
- trust_env
プロキシ構成、デフォルト認証などの信頼環境設定。
- verify
SSL検証のデフォルト。 デフォルトは True で、リモートエンドでTLS証明書を検証するように要求する必要があります。 verifyが False に設定されている場合、リクエストはサーバーによって提示されたTLS証明書を受け入れ、ホスト名の不一致や期限切れの証明書を無視します。これにより、アプリケーションが中間者攻撃に対して脆弱になります( MitM)攻撃。 テストでは、これを False にのみ設定してください。
下位レベルのクラス
- class requests.Request(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)
ユーザーが作成した Request オブジェクト。
サーバーに送信される PreparedRequest を準備するために使用されます。
- パラメーター
method –使用するHTTPメソッド。
url –送信するURL。
headers –送信するヘッダーの辞書。
files –マルチパートアップロードする{filename:fileobject}ファイルの辞書。
data –リクエストに添付する本文。 辞書またはタプルのリスト
[(key, value)]
が提供されている場合、フォームのエンコードが行われます。json –本文がリクエストに添付するjson(ファイルまたはデータが指定されていない場合)。
params –URLに追加するURLパラメーター。 辞書またはタプルのリスト
[(key, value)]
が提供されている場合、フォームのエンコードが行われます。auth –認証ハンドラーまたは(ユーザー、パス)タプル。
Cookies –このリクエストに添付するCookieの辞書またはCookieJar。
hooks –内部使用のためのコールバックフックの辞書。
使用法:
>>> import requests >>> req = requests.Request('GET', 'https://httpbin.org/get') >>> req.prepare() <PreparedRequest [GET]>
- deregister_hook(event, hook)
以前に登録したフックの登録を解除します。 フックが存在する場合はTrueを返し、存在しない場合はFalseを返します。
- prepare()
送信用の PreparedRequest を作成し、それを返します。
- register_hook(event, hook)
フックを正しく登録してください。
- class requests.Response
Response オブジェクト。HTTPリクエストに対するサーバーの応答が含まれています。
- property apparent_encoding
charset_normalizerまたはchardetライブラリによって提供される見かけのエンコーディング。
- close()
接続を解放してプールに戻します。 このメソッドが呼び出されたら、基になる
raw
オブジェクトに再度アクセスしないでください。注:通常、明示的に呼び出す必要はありません。
- property content
応答の内容(バイト単位)。
- cookies
サーバーが送り返したCookieのCookieJar。
- elapsed
要求を送信してから応答が到着するまでに経過した時間(タイムデルタとして)。 このプロパティは、リクエストの最初のバイトを送信してからヘッダーの解析を終了するまでにかかる時間を具体的に測定します。 したがって、応答の内容や
stream
キーワード引数の値を使用しても影響を受けません。
- encoding
r.textにアクセスするときにデコードするためのエンコード。
- headers
大文字と小文字を区別しない応答ヘッダーの辞書。 たとえば、
headers['content-encoding']
は、'Content-Encoding'
応答ヘッダーの値を返します。
- history
リクエストの履歴からの Response オブジェクトのリスト。 リダイレクト応答はすべてここで終了します。 リストは、古いリクエストから最新のリクエストの順に並べ替えられます。
- property is_permanent_redirect
この応答がリダイレクトの永続バージョンの1つである場合はTrue。
- property is_redirect
この応答が( Session.resolve_redirects によって)自動的に処理された可能性のある整形式のHTTPリダイレクトである場合はTrue。
- iter_content(chunk_size=1, decode_unicode=False)
応答データを繰り返し処理します。 リクエストでstream = Trueが設定されている場合、これにより、大きな応答のためにコンテンツがメモリに一度に読み込まれるのを回避できます。 チャンクサイズは、メモリに読み込む必要のあるバイト数です。 デコードが行われる可能性があるため、これは必ずしも返される各アイテムの長さではありません。
chunk_sizeは、int型またはNone型である必要があります。 Noneの値は、 stream の値に応じて機能が異なります。 stream = Trueは、受信したチャンクのサイズに関係なく、到着したデータを読み取ります。 stream = Falseの場合、データは単一のチャンクとして返されます。
decode_unicodeがTrueの場合、コンテンツは応答に基づいて利用可能な最良のエンコーディングを使用してデコードされます。
- iter_lines(chunk_size=512, decode_unicode=False, delimiter=None)
応答データを一度に1行ずつ繰り返します。 リクエストでstream = Trueが設定されている場合、これにより、大きな応答のためにコンテンツがメモリに一度に読み込まれるのを回避できます。
ノート
この方法は再入可能ではありません。
- json(**kwargs)
応答のjsonエンコードされたコンテンツがあれば、それを返します。
- パラメーター
** kwargs –
json.loads
が取るオプションの引数。- 上げる
simplejson.JSONDecodeError –応答本文に有効なjsonが含まれておらず、simplejsonがインストールされている場合。
json.JSONDecodeError –応答本文に有効なjsonが含まれておらず、simplejsonがPython3にインストールされていない場合。
ValueError –応答本文に有効なjsonが含まれておらず、simplejsonがPython2にインストールされていない場合。
- property links
応答の解析されたヘッダーリンクがあれば、それを返します。
- property next
リダイレクトチェーン内の次のリクエストがある場合は、PreparedRequestを返します。
- property ok
status_code が400未満の場合はTrueを返し、そうでない場合はFalseを返します。
この属性は、応答のステータスコードが400〜600であるかどうかをチェックして、クライアントエラーまたはサーバーエラーがあったかどうかを確認します。 ステータスコードが200〜400の場合、Trueが返されます。 これはではなく、応答コードが
200 OK
であるかどうかを確認するためのチェックです。
- raise_for_status()
HTTPError が発生した場合は、発生します。
- raw
応答のファイルのようなオブジェクト表現(高度な使用法用)。
raw
を使用するには、リクエストに応じてstream=True
を設定する必要があります。 この要件は、リクエストの内部での使用には適用されません。
- reason
応答されたHTTPステータスのテキストによる理由。 「見つかりません」または「OK」。
- request
これが応答である PreparedRequest オブジェクト。
- status_code
応答されたHTTPステータスの整数コード。例: 404または200。
- property text
応答の内容(Unicode)。
Response.encodingがNoneの場合、エンコーディングは
charset_normalizer
またはchardet
を使用して推測されます。応答コンテンツのエンコーディングは、レターのRFC 2616に従って、HTTPヘッダーのみに基づいて決定されます。 HTTP以外の知識を利用してエンコーディングをより正確に推測できる場合は、このプロパティにアクセスする前に
r.encoding
を適切に設定する必要があります。
- url
応答の最終的なURLの場所。
下位-下位レベルのクラス
- class requests.PreparedRequest
サーバーに送信される正確なバイトを含む、完全に変更可能な PreparedRequest オブジェクト。
インスタンスは Request オブジェクトから生成されるため、手動でインスタンス化しないでください。 これを行うと、望ましくない影響が生じる可能性があります。
使用法:
>>> import requests >>> req = requests.Request('GET', 'https://httpbin.org/get') >>> r = req.prepare() >>> r <PreparedRequest [GET]> >>> s = requests.Session() >>> s.send(r) <Response [200]>
- body
サーバーに送信する要求本文。
- deregister_hook(event, hook)
以前に登録したフックの登録を解除します。 フックが存在する場合はTrueを返し、存在しない場合はFalseを返します。
- headers
HTTPヘッダーの辞書。
- hooks
内部使用のためのコールバックフックの辞書。
- method
サーバーに送信するHTTP動詞。
- property path_url
使用するパスURLを作成します。
- prepare(method=None, url=None, headers=None, files=None, data=None, params=None, auth=None, cookies=None, hooks=None, json=None)
指定されたパラメーターを使用してリクエスト全体を準備します。
- prepare_auth(auth, url=)
指定されたHTTP認証データを準備します。
- prepare_body(data, files, json=None)
指定されたHTTPボディデータを準備します。
- prepare_content_length(body)
リクエストメソッドと本文に基づいてContent-Lengthヘッダーを準備します
- prepare_cookies(cookies)
指定されたHTTPCookieデータを準備します。
この関数は、最終的にcookielibを使用して、指定されたCookieから
Cookie
ヘッダーを生成します。 cookielibの設計により、ヘッダーがすでに存在する場合、ヘッダーは再生成されません。つまり、この関数は、 PreparedRequest オブジェクトの存続期間中に1回しか呼び出すことができません。 「Cookie」ヘッダーが事前に削除されていない限り、prepare_cookies
への後続の呼び出しは実際の効果はありません。
- prepare_headers(headers)
指定されたHTTPヘッダーを準備します。
- prepare_hooks(hooks)
指定されたフックを準備します。
- prepare_method(method)
指定されたHTTPメソッドを準備します。
- prepare_url(url, params)
指定されたHTTPURLを準備します。
- register_hook(event, hook)
フックを正しく登録してください。
- url
リクエストの送信先のHTTPURL。
- class requests.adapters.BaseAdapter
ベーストランスポートアダプター
- close()
アダプタ固有のアイテムをクリーンアップします。
- send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)
PreparedRequestオブジェクトを送信します。 Responseオブジェクトを返します。
- パラメーター
request –送信中の
PreparedRequest
。stream –(オプション)リクエストコンテンツをストリーミングするかどうか。
timeout ( float または tuple )–(オプション)サーバーがデータを送信するのを待つ時間。 float、または(接続タイムアウト、読み取りタイムアウト)タプル。
verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用するCAバンドルへのパスである必要があります)のいずれか
cert –(オプション)ユーザーが提供した信頼できるSSL証明書。
プロキシ –(オプション)リクエストに適用するプロキシディクショナリ。
- class requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)
urllib3用の組み込みHTTPアダプター。
Transport Adapterインターフェースを実装することにより、RequestsセッションがHTTPおよびHTTPSURLに接続するための一般的な場合のインターフェースを提供します。 このクラスは通常、
Session
クラスによって内部で作成されます。- パラメーター
pool_connections –キャッシュするurllib3接続プールの数。
pool_maxsize –プールに保存する接続の最大数。
max_retries –各接続が試行する必要のある再試行の最大数。 これは、失敗したDNSルックアップ、ソケット接続、および接続タイムアウトにのみ適用され、データがサーバーに到達した要求には適用されないことに注意してください。 デフォルトでは、リクエストは失敗した接続を再試行しません。 リクエストを再試行する条件をきめ細かく制御する必要がある場合は、urllib3の
Retry
クラスをインポートして、代わりにそれを渡します。pool_block –接続プールが接続をブロックする必要があるかどうか。
使用法:
>>> import requests >>> s = requests.Session() >>> a = requests.adapters.HTTPAdapter(max_retries=3) >>> s.mount('http://', a)
- add_headers(request, **kwargs)
接続に必要なヘッダーを追加します。 v2.0以降、これはデフォルトでは何もしませんが、 HTTPAdapter をサブクラス化するユーザーによるオーバーライドのために残されています。
これはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
request –ヘッダーを追加する
PreparedRequest
。kwargs – send()の呼び出しからのキーワード引数。
- build_response(req, resp)
urllib3応答から Response オブジェクトを構築します。 これはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
req –応答の生成に使用される
PreparedRequest
。resp –urllib3応答オブジェクト。
- リターンタイプ
- cert_verify(conn, url, verify, cert)
SSL証明書を確認します。 このメソッドはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
conn –証明書に関連付けられたurllib3接続オブジェクト。
url –要求されたURL。
verify –ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用するCAバンドルへのパスである必要があります)のいずれか
cert –検証するSSL証明書。
- close()
内部状態を破棄します。
現在、これにより、PoolManagerとアクティブなProxyManagerが閉じられ、プールされた接続がすべて閉じられます。
- get_connection(url, proxies=None)
指定されたURLのurllib3接続を返します。 これはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
url –接続するURL。
プロキシ –(オプション)このリクエストで使用されるプロキシのリクエストスタイルのディクショナリ。
- リターンタイプ
urllib3.ConnectionPool
- init_poolmanager(connections, maxsize, block=False, **pool_kwargs)
urllib3PoolManagerを初期化します。
このメソッドはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
connections –キャッシュするurllib3接続プールの数。
maxsize –プールに保存する接続の最大数。
block –空き接続が利用できない場合にブロックします。
pool_kwargs –プールマネージャーを初期化するために使用される追加のキーワード引数。
- proxy_headers(proxy)
プロキシを介して送信されるリクエストに追加するヘッダーのディクショナリを返します。 これはurllib3マジックと連携して、CONNECTが使用されている場合にトンネリングされた要求ではなく、プロキシに正しく送信されるようにします。
これはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
proxy –このリクエストに使用されているプロキシのURL。
- リターンタイプ
dict
- proxy_manager_for(proxy, **proxy_kwargs)
指定されたプロキシのurllib3ProxyManagerを返します。
このメソッドはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
proxy –urllib3ProxyManagerを返すプロキシ。
proxy_kwargs –プロキシマネージャーの構成に使用される追加のキーワード引数。
- 戻り値
ProxyManager
- リターンタイプ
urllib3.ProxyManager
- request_url(request, proxies)
最終リクエストを行うときに使用するURLを取得します。
メッセージがHTTPプロキシを介して送信されている場合は、完全なURLを使用する必要があります。 それ以外の場合は、URLのパス部分のみを使用する必要があります。
これはユーザーコードから呼び出すべきではなく、 HTTPAdapter をサブクラス化するときにのみ使用できるように公開されています。
- パラメーター
request –送信中の
PreparedRequest
。プロキシ –プロキシURLへのスキームまたはスキームとホストの辞書。
- リターンタイプ
str
- send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)
PreparedRequestオブジェクトを送信します。 Responseオブジェクトを返します。
- パラメーター
request –送信中の
PreparedRequest
。stream –(オプション)リクエストコンテンツをストリーミングするかどうか。
timeout ( float または tuple または urllib3 Timeoutオブジェクト)–(オプション)サーバーがデータを送信するのを待ってから、floatまたは(接続タイムアウト、読み取りタイムアウト)タプルとして放棄する時間。
verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用するCAバンドルへのパスである必要があります)のいずれか
cert –(オプション)ユーザーが提供した信頼できるSSL証明書。
プロキシ –(オプション)リクエストに適用するプロキシディクショナリ。
- リターンタイプ
認証
- class requests.auth.AuthBase
- すべての認証実装が派生する基本クラス
- class requests.auth.HTTPBasicAuth(username, password)
- 指定されたRequestオブジェクトにHTTP基本認証を添付します。
- class requests.auth.HTTPProxyAuth(username, password)
- 指定されたRequestオブジェクトにHTTPプロキシ認証を添付します。
- class requests.auth.HTTPDigestAuth(username, password)
- 指定されたRequestオブジェクトにHTTPダイジェスト認証を添付します。
エンコーディング
- requests.utils.get_encodings_from_content(content)
- 指定されたコンテンツ文字列からエンコーディングを返します。
- パラメーター
- content –エンコーディングを抽出するバイト文字列。
- requests.utils.get_encoding_from_headers(headers)
- 指定されたHTTPヘッダーディクトからエンコーディングを返します。
- パラメーター
- headers –エンコーディングを抽出するための辞書。
- リターンタイプ
- str
- requests.utils.get_unicode_from_response(r)
要求されたコンテンツをUnicodeで返します。
- パラメーター
r –ユニコードコンテンツを取得するための応答オブジェクト。
試した:
content-typeの文字セット
フォールバックして、すべてのUnicode文字を置き換えます
- リターンタイプ
str
ステータスコードルックアップ
- requests.codes
- のエイリアス
codes
オブジェクトは、HTTPステータスの一般名から、属性または辞書アイテムとしてアクセス可能な数値コードへのマッピングを定義します。
例:
>>> import requests
>>> requests.codes['temporary_redirect']
307
>>> requests.codes.teapot
418
>>> requests.codes['\o/']
200
一部のコードには複数の名前があり、名前の大文字と小文字の両方のバージョンが許可されます。 たとえば、codes.ok
、codes.OK
、およびcodes.okay
はすべて、HTTPステータスコード200に対応します。
- 100:
continue
- 101:
switching_protocols
- 102:
processing
- 103:
checkpoint
- 122:
uri_too_long
、request_uri_too_long
- 200:
ok
、okay
、all_ok
、all_okay
、all_good
、\o/
、✓
- 201:
created
- 202:
accepted
- 203:
non_authoritative_info
、non_authoritative_information
- 204:
no_content
- 205:
reset_content
、reset
- 206:
partial_content
、partial
- 207:
multi_status
、multiple_status
、multi_stati
、multiple_stati
- 208:
already_reported
- 226:
im_used
- 300:
multiple_choices
- 301:
moved_permanently
、moved
、\o-
- 302:
found
- 303:
see_other
、other
- 304:
not_modified
- 305:
use_proxy
- 306:
switch_proxy
- 307:
temporary_redirect
、temporary_moved
、temporary
- 308:
permanent_redirect
、resume_incomplete
、resume
- 400:
bad_request
、bad
- 401:
unauthorized
- 402:
payment_required
、payment
- 403:
forbidden
- 404:
not_found
、-o-
- 405:
method_not_allowed
、not_allowed
- 406:
not_acceptable
- 407:
proxy_authentication_required
、proxy_auth
、proxy_authentication
- 408:
request_timeout
、timeout
- 409:
conflict
- 410:
gone
- 411:
length_required
- 412:
precondition_failed
、precondition
- 413:
request_entity_too_large
- 414:
request_uri_too_large
- 415:
unsupported_media_type
、unsupported_media
、media_type
- 416:
requested_range_not_satisfiable
、requested_range
、range_not_satisfiable
- 417:
expectation_failed
- 418:
im_a_teapot
、teapot
、i_am_a_teapot
- 421:
misdirected_request
- 422:
unprocessable_entity
、unprocessable
- 423:
locked
- 424:
failed_dependency
、dependency
- 425:
unordered_collection
、unordered
- 426:
upgrade_required
、upgrade
- 428:
precondition_required
、precondition
- 429:
too_many_requests
、too_many
- 431:
header_fields_too_large
、fields_too_large
- 444:
no_response
、none
- 449:
retry_with
、retry
- 450:
blocked_by_windows_parental_controls
、parental_controls
- 451:
unavailable_for_legal_reasons
、legal_reasons
- 499:
client_closed_request
- 500:
internal_server_error
、server_error
、/o\
、✗
- 501:
not_implemented
- 502:
bad_gateway
- 503:
service_unavailable
、unavailable
- 504:
gateway_timeout
- 505:
http_version_not_supported
、http_version
- 506:
variant_also_negotiates
- 507:
insufficient_storage
- 509:
bandwidth_limit_exceeded
、bandwidth
- 510:
not_extended
- 511:
network_authentication_required
、network_auth
、network_authentication
1.xへの移行
このセクションでは、0.xと1.xの主な違いについて詳しく説明し、アップグレードの手間を軽減することを目的としています。
APIの変更
Response.json
は呼び出し可能になり、応答のプロパティではなくなりました。import requests r = requests.get('https://api.github.com/events') r.json() # This *call* raises an exception if JSON decoding fails
Session
APIが変更されました。 Sessionsオブジェクトはパラメータを取りません。Session
も大文字になりましたが、下位互換性のために小文字のsession
でインスタンス化できます。s = requests.Session() # formerly, session took parameters s.auth = auth s.headers.update(headers) r = s.get('https://httpbin.org/headers')
'response'を除くすべてのリクエストフックが削除されました。
認証ヘルパーは、個別のモジュールに分割されています。 requests-oauthlib および requests-kerberos を参照してください。
ストリーミングリクエストのパラメータが
prefetch
からstream
に変更され、ロジックが逆になりました。 さらに、生の応答の読み取りにはstream
が必要になりました。# in 0.x, passing prefetch=False would accomplish the same thing r = requests.get('https://api.github.com/events', stream=True) for chunk in r.iter_content(8192): ...
requestsメソッドの
config
パラメーターは削除されました。 これらのオプションの一部は、キープアライブやリダイレクトの最大数など、Session
で構成されるようになりました。 冗長性オプションは、ロギングを構成することによって処理する必要があります。import requests import logging # Enabling debugging at http.client level (requests->urllib3->http.client) # you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA. # the only thing missing will be the response.body which is not logged. try: # for Python 3 from http.client import HTTPConnection except ImportError: from httplib import HTTPConnection HTTPConnection.debuglevel = 1 logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests logging.getLogger().setLevel(logging.DEBUG) requests_log = logging.getLogger("urllib3") requests_log.setLevel(logging.DEBUG) requests_log.propagate = True requests.get('https://httpbin.org/headers')
ライセンス
APIとは関係のない重要な違いの1つは、ライセンスが ISC ライセンスから Apache 2.0 ライセンスに変更されたことです。 Apache 2.0ライセンスは、リクエストへの貢献もApache2.0ライセンスによってカバーされることを保証します。
2.xへの移行
1.0リリースと比較して、後方互換性のない変更は比較的少なかったが、このメジャーリリースで注意すべきいくつかの問題がまだある。
新しいAPI、関連するGitHubの問題へのリンク、いくつかのバグ修正など、このリリースでの変更の詳細については、この件に関するCoryのブログをご覧ください。
APIの変更
Requestsが例外を処理する方法にいくつかの変更がありました。
RequestException
は、エラーのタイプをより正確に分類するため、RuntimeError
ではなくIOError
のサブクラスになりました。 さらに、無効なURLエスケープシーケンスにより、ValueError
ではなくRequestException
のサブクラスが発生するようになりました。requests.get('http://%zz/') # raises requests.exceptions.InvalidURL
最後に、誤ったチャンクエンコーディングによって引き起こされた
httplib.IncompleteRead
例外は、代わりにリクエストChunkedEncodingError
を発生させるようになりました。プロキシAPIが少し変更されました。 プロキシURLのスキームが必要になりました。
proxies = { "http": "10.10.1.10:3128", # use http://10.10.1.10:3128 instead } # In requests 1.x, this was legal, in requests 2.x, # this raises requests.exceptions.MissingSchema requests.get("http://example.org", proxies=proxies)
行動の変化
headers
辞書のキーは、すべてのPythonバージョンでネイティブ文字列になりました。 Python 2ではバイト文字列、Python3ではUnicode。 キーがネイティブ文字列(Python2のUnicodeまたはPython3のバイト文字列)でない場合、UTF-8エンコーディングを想定してネイティブ文字列型に変換されます。headers
ディクショナリの値は常に文字列である必要があります。 これは1.0より前からプロジェクトの立場でしたが、最近の変更(バージョン2.11.0以降)ではこれがより厳密に適用されます。 可能な場合は、ヘッダー値をユニコードとして渡さないようにすることをお勧めします。