開発者インターフェース—ドキュメントを要求します

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

開発者インターフェース

ドキュメントのこの部分は、リクエストのすべてのインターフェースをカバーしています。 リクエストが外部ライブラリに依存している部分については、ここで最も重要なドキュメントを作成し、正規のドキュメントへのリンクを提供します。

メインインターフェース

リクエストのすべての機能には、これらの7つの方法でアクセスできます。 それらはすべて、 Response オブジェクトのインスタンスを返します。

requests.request(method, url, **kwargs)

リクエストを作成して送信します。

パラメーター
  • method –新しい Request オブジェクトのメソッド:GETOPTIONSHEADPOST、[ 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認証を有効にするための認証タプル。

  • timeoutfloat または tuple )–(オプション)サーバーがデータを送信するのを待つ秒数。フロート、または(接続タイムアウト、読み取りタイムアウト)タプル。

  • allow_redirectsbool )–(オプション)ブール値。 GET / OPTIONS / POST / PUT / PATCH / DELETE / HEADリダイレクトを有効/無効にします。 デフォルトはTrueです。

  • プロキシ –(オプション)プロキシのURLへの辞書マッピングプロトコル。

  • verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用する場合はCAバンドルへのパスである必要があります)。 デフォルトはTrueです。

  • stream –(オプション)Falseの場合、応答コンテンツはすぐにダウンロードされます。

  • cert –(オプション)文字列の場合、sslクライアント証明書ファイル(.pem)へのパス。 タプルの場合、( 'cert'、 'key')ペア。

戻り値

応答オブジェクト

リターンタイプ

requests.Response

使用法:

>>> import requests
>>> req = requests.request('GET', 'https://httpbin.org/get')
>>> req
<Response [200]>
requests.head(url, **kwargs)
HEADリクエストを送信します。
パラメーター
;;* url –新しい Request オブジェクトのURL。
  • ** kwargsrequestが取るオプションの引数。 allow_redirects が指定されていない場合、 False に設定されます(デフォルトの request の動作とは対照的です)。
戻り値
応答オブジェクト
リターンタイプ
requests.Response
requests.get(url, params=None, **kwargs)
GETリクエストを送信します。
パラメーター
;;* url –新しい Request オブジェクトのURL。
  • params –(オプション)辞書、 Request のクエリ文字列で送信するタプルまたはバイトのリスト。
  • ** kwargsrequestが取るオプションの引数。
戻り値
応答オブジェクト
リターンタイプ
requests.Response
requests.post(url, data=None, json=None, **kwargs)
POSTリクエストを送信します。
パラメーター
;;* url –新しい Request オブジェクトのURL。
  • data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。
  • json –(オプション) Request の本文で送信するjsonデータ。
  • ** kwargsrequestが取るオプションの引数。
戻り値
応答オブジェクト
リターンタイプ
requests.Response
requests.put(url, data=None, **kwargs)
PUTリクエストを送信します。
パラメーター
;;* url –新しい Request オブジェクトのURL。
  • data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。
  • json –(オプション) Request の本文で送信するjsonデータ。
  • ** kwargsrequestが取るオプションの引数。
戻り値
応答オブジェクト
リターンタイプ
requests.Response
requests.patch(url, data=None, **kwargs)
PATCHリクエストを送信します。
パラメーター
;;* url –新しい Request オブジェクトのURL。
  • data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。
  • json –(オプション) Request の本文で送信するjsonデータ。
  • ** kwargsrequestが取るオプションの引数。
戻り値
応答オブジェクト
リターンタイプ
requests.Response
requests.delete(url, **kwargs)
DELETEリクエストを送信します。
パラメーター
;;* url –新しい Request オブジェクトのURL。
  • ** kwargsrequestが取るオプションの引数。
戻り値
応答オブジェクト
リターンタイプ
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。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.Response

get(url, **kwargs)

GETリクエストを送信します。 Response オブジェクトを返します。

パラメーター
  • url –新しい Request オブジェクトのURL。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.Response

get_adapter(url)

指定されたURLに適切な接続アダプタを返します。

リターンタイプ

requests.adapters.BaseAdapter

get_redirect_target(resp)

応答を受け取ります。 リダイレクトURIまたはNoneを返します

head(url, **kwargs)

HEADリクエストを送信します。 Response オブジェクトを返します。

パラメーター
  • url –新しい Request オブジェクトのURL。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.Response

headers

このセッションから送信される各リクエストで送信されるヘッダーの大文字と小文字を区別しない辞書。

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。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.Response

params

リクエストに添付するクエリ文字列データの辞書。 ディクショナリ値は、複数値のクエリパラメータを表すためのリストである場合があります。

patch(url, data=None, **kwargs)

PATCHリクエストを送信します。 Response オブジェクトを返します。

パラメーター
  • url –新しい Request オブジェクトのURL。

  • data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.Response

post(url, data=None, json=None, **kwargs)

POSTリクエストを送信します。 Response オブジェクトを返します。

パラメーター
  • url –新しい Request オブジェクトのURL。

  • data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。

  • json –(オプション) Request の本文で送信するjson。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.Response

prepare_request(request)

送信用の PreparedRequest を作成し、それを返します。 PreparedRequest には、 Request インスタンスと Session の設定がマージされた設定があります。

パラメーター

requestリクエストインスタンス。このセッションの設定で準備します。

リターンタイプ

requests.PreparedRequest

proxies

辞書マッピングプロトコルまたはプロトコルとホストをプロキシのURLに(例: {'http': 'foo.bar:3128'、 'http://host.name': 'foo.bar:4012'})各リクエストで使用されます。

put(url, data=None, **kwargs)

PUTリクエストを送信します。 Response オブジェクトを返します。

パラメーター
  • url –新しい Request オブジェクトのURL。

  • data –(オプション) Request の本文で送信する辞書、タプル、バイト、またはファイルのようなオブジェクトのリスト。

  • ** kwargsrequestが取るオプションの引数。

リターンタイプ

requests.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認証を有効にします。

  • timeoutfloat または tuple )–(オプション)サーバーがデータを送信するのを待つ時間。 float、または(接続タイムアウト、読み取りタイムアウト)タプル。

  • allow_redirectsbool )–(オプション)デフォルトでTrueに設定されています。

  • プロキシ –(オプション)辞書マッピングプロトコルまたはプロトコルとホスト名をプロキシのURLに。

  • stream –(オプション)応答コンテンツをすぐにダウンロードするかどうか。 デフォルトはFalseです。

  • verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用する場合はCAバンドルへのパスである必要があります)。 デフォルトはTrueです。 Falseに設定すると、リクエストはサーバーから提示されたTLS証明書を受け入れ、ホスト名の不一致や期限切れの証明書を無視します。これにより、アプリケーションは中間者(MitM)攻撃に対して脆弱になります。 。 検証をFalseに設定すると、ローカル開発またはテスト中に役立つ場合があります。

  • cert –(オプション)文字列の場合、sslクライアント証明書ファイル(.pem)へのパス。 タプルの場合、( 'cert'、 'key')ペア。

リターンタイプ

requests.Response

resolve_redirects(resp, req, stream=False, timeout=None, verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs)

応答を受け取ります。 応答または要求のジェネレーターを返します。

send(request, **kwargs)

指定されたPreparedRequestを送信します。

リターンタイプ

requests.Response

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エンコードされたコンテンツがあれば、それを返します。

パラメーター

** kwargsjson.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 –(オプション)リクエストコンテンツをストリーミングするかどうか。

  • timeoutfloat または 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応答オブジェクト。

リターンタイプ

requests.Response

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 –(オプション)リクエストコンテンツをストリーミングするかどうか。

  • timeoutfloat または tuple または urllib3 Timeoutオブジェクト)–(オプション)サーバーがデータを送信するのを待ってから、floatまたは(接続タイムアウト、読み取りタイムアウト)タプルとして放棄する時間。

  • verify –(オプション)ブール値(サーバーのTLS証明書を検証するかどうかを制御する場合)、または文字列(使用するCAバンドルへのパスである必要があります)のいずれか

  • cert –(オプション)ユーザーが提供した信頼できるSSL証明書。

  • プロキシ –(オプション)リクエストに適用するプロキシディクショナリ。

リターンタイプ

requests.Response


認証

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 –ユニコードコンテンツを取得するための応答オブジェクト。

試した:

  1. content-typeの文字セット

  2. フォールバックして、すべてのUnicode文字を置き換えます

リターンタイプ

str


クッキー

requests.utils.dict_from_cookiejar(cj)
CookieJarからキー/値ディクショナリを返します。
パラメーター
cj –Cookieを抽出するCookieJarオブジェクト。
リターンタイプ
dict
requests.utils.add_dict_to_cookiejar(cj, cookie_dict)
キー/値ディクショナリからCookieJarを返します。
パラメーター
;;* cj –Cookieを挿入するCookieJar。
  • cookie_dict –CookieJarに挿入するキー/値のディクト。
リターンタイプ
クッキー缶
requests.cookies.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
キー/値ディクショナリからCookieJarを返します。
パラメーター
;;* cookie_dict –CookieJarに挿入するキー/値のディクト。
  • cookiejar –(オプション)Cookieを追加するcookiejar。
  • 上書き –(オプション)Falseの場合、jarに既にあるCookieを新しいCookieに置き換えません。
リターンタイプ
クッキー缶
class requests.cookies.RequestsCookieJar(policy=None)

互換性クラス; はcookielib.CookieJarですが、dictインターフェースを公開します。

これは、指定されていないリクエストとセッション用にデフォルトで作成するCookieJarです。一部のクライアントは、dict操作をサポートするためにresponse.cookiesとsession.cookiesを期待する場合があるためです。

リクエストは内部でdictインターフェースを使用しません。 外部クライアントコードとの互換性のためだけです。 すべてのリクエストコードは、外部から提供されたCookieJarのインスタンスですぐに機能するはずです。 LWPCookieJarおよびFileCookieJar

通常のCookieJarとは異なり、このクラスはピクルス可能です。

警告

通常O(1)である辞書操作はO(n)である可能性があります。

add_cookie_header(request)

リクエストに正しいCookie:ヘッダーを追加します(urllib.request.Requestオブジェクト)。

policy.hide_cookie2がtrueでない限り、Cookie2ヘッダーも追加されます。

clear(domain=None, path=None, name=None)

いくつかのクッキーをクリアします。

引数なしでこのメソッドを呼び出すと、すべてのCookieがクリアされます。 引数を1つ指定すると、そのドメインに属するCookieのみが削除されます。 2つの引数が与えられた場合、そのドメイン内の指定されたパスに属するCookieは削除されます。 3つの引数が与えられた場合、指定された名前、パス、およびドメインを持つCookieが削除されます。

一致するCookieが存在しない場合、KeyErrorが発生します。

clear_expired_cookies()

期限切れのCookieをすべて破棄します。

おそらくこのメソッドを呼び出す必要はありません。期限切れのCookieがサーバーに返送されることはありません(DefaultCookiePolicyを使用している場合)。このメソッドはCookieJar自体によって頻繁に呼び出され、.save()メソッドは呼び出されません。とにかく期限切れのCookieを保存します(真のignore_expires引数を渡して別の方法で要求しない限り)。

clear_session_cookies()

すべてのセッションCookieを破棄します。

.save()メソッドは、真のignore_discard引数を渡して別の方法で要求しない限り、セッションCookieを保存しないことに注意してください。

copy()

このRequestsCookieJarのコピーを返します。

extract_cookies(response, request)

要求に応じて許可される場合は、応答からCookieを抽出します。

get(name, default=None, domain=None, path=None)

複数のドメインで1つのCookiejarを使用することによる名前の衝突を解決するために、オプションのドメインおよびパス引数もサポートするDictのようなget()。

警告

操作はO(1)ではなくO(n)です。

get_dict(domain=None, path=None)

オプションのドメインとパスを引数として取り、要件を満たすCookieの名前と値のペアのプレーンな古いPythondictを返します。

リターンタイプ

dict

get_policy()

使用されたCookiePolicyインスタンスを返します。

items()

jarから名前と値のタプルのリストを返すDictのようなitems()。 クライアントコードがdict(RequestsCookieJar)を呼び出して、キーと値のペアのバニラpythondictを取得できるようにします。

も参照してください

keys()およびvalues()。

iteritems()

jarから名前と値のタプルのイテレータを返すDictのようなiteritems()。

も参照してください

iterkeys()およびitervalues()。

iterkeys()

jarからCookieの名前のイテレータを返すDictのようなiterkeys()。

も参照してください

itervalues()およびiteritems()。

itervalues()

jarからCookieの値のイテレータを返すDictのようなitervalues()。

も参照してください

iterkeys()およびiteritems()。

keys()

jarからCookieの名前のリストを返すDictのようなkeys()。

も参照してください

values()およびitems()。

list_domains()

jar内のすべてのドメインを一覧表示するユーティリティメソッド。

list_paths()

jar内のすべてのパスを一覧表示するユーティリティメソッド。

make_cookies(response, request)

応答オブジェクトから抽出されたCookieオブジェクトのシーケンスを返します。

multiple_domains()

jarに複数のドメインがある場合はTrueを返します。 それ以外の場合はFalseを返します。

リターンタイプ

ブール

pop(k[, d]) v, remove specified key and return the corresponding value.

キーが見つからない場合、指定されている場合はdが返され、見つからない場合はKeyErrorが発生します。

popitem() (k, v), remove and return some (key, value) pair

2タプルとして; ただし、Dが空の場合はKeyErrorを発生させます。

set(name, value, **kwargs)

複数のドメインで1つのCookiejarを使用することによる名前の衝突を解決するために、オプションのドメインおよびパス引数もサポートするDictのようなset()。

set_cookie(cookie, *args, **kwargs)

設定する必要があるかどうかを確認せずに、Cookieを設定します。

set_cookie_if_ok(cookie, request)

ポリシーでOKと記載されている場合は、Cookieを設定します。

setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
update(other)

このjarを別のCookieJarまたはdictのようなCookieで更新します

values()

jarからCookieの値のリストを返すDictのようなvalues()。

も参照してください

keys()およびitems()。

class requests.cookies.CookieConflictError
クッキージャーで指定された基準を満たす2つのクッキーがあります。 より具体的にするために、.getと.setを使用し、ドメインとパスの引数を含めます。
with_traceback()
Exception.with_traceback(tb)– self .__ traceback__をtbに設定し、selfを返します。


ステータスコードルックアップ

requests.codes
のエイリアス

codesオブジェクトは、HTTPステータスの一般名から、属性または辞書アイテムとしてアクセス可能な数値コードへのマッピングを定義します。

例:

>>> import requests
>>> requests.codes['temporary_redirect']
307
>>> requests.codes.teapot
418
>>> requests.codes['\o/']
200

一部のコードには複数の名前があり、名前の大文字と小文字の両方のバージョンが許可されます。 たとえば、codes.okcodes.OK、およびcodes.okayはすべて、HTTPステータスコード200に対応します。

  • 100:continue
  • 101:switching_protocols
  • 102:processing
  • 103:checkpoint
  • 122:uri_too_longrequest_uri_too_long
  • 200:okokayall_okall_okayall_good\o/
  • 201:created
  • 202:accepted
  • 203:non_authoritative_infonon_authoritative_information
  • 204:no_content
  • 205:reset_contentreset
  • 206:partial_contentpartial
  • 207:multi_statusmultiple_statusmulti_statimultiple_stati
  • 208:already_reported
  • 226:im_used
  • 300:multiple_choices
  • 301:moved_permanentlymoved\o-
  • 302:found
  • 303:see_otherother
  • 304:not_modified
  • 305:use_proxy
  • 306:switch_proxy
  • 307:temporary_redirecttemporary_movedtemporary
  • 308:permanent_redirectresume_incompleteresume
  • 400:bad_requestbad
  • 401:unauthorized
  • 402:payment_requiredpayment
  • 403:forbidden
  • 404:not_found-o-
  • 405:method_not_allowednot_allowed
  • 406:not_acceptable
  • 407:proxy_authentication_requiredproxy_authproxy_authentication
  • 408:request_timeouttimeout
  • 409:conflict
  • 410:gone
  • 411:length_required
  • 412:precondition_failedprecondition
  • 413:request_entity_too_large
  • 414:request_uri_too_large
  • 415:unsupported_media_typeunsupported_mediamedia_type
  • 416:requested_range_not_satisfiablerequested_rangerange_not_satisfiable
  • 417:expectation_failed
  • 418:im_a_teapotteapoti_am_a_teapot
  • 421:misdirected_request
  • 422:unprocessable_entityunprocessable
  • 423:locked
  • 424:failed_dependencydependency
  • 425:unordered_collectionunordered
  • 426:upgrade_requiredupgrade
  • 428:precondition_requiredprecondition
  • 429:too_many_requeststoo_many
  • 431:header_fields_too_largefields_too_large
  • 444:no_responsenone
  • 449:retry_withretry
  • 450:blocked_by_windows_parental_controlsparental_controls
  • 451:unavailable_for_legal_reasonslegal_reasons
  • 499:client_closed_request
  • 500:internal_server_errorserver_error/o\
  • 501:not_implemented
  • 502:bad_gateway
  • 503:service_unavailableunavailable
  • 504:gateway_timeout
  • 505:http_version_not_supportedhttp_version
  • 506:variant_also_negotiates
  • 507:insufficient_storage
  • 509:bandwidth_limit_exceededbandwidth
  • 510:not_extended
  • 511:network_authentication_requirednetwork_authnetwork_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以降)ではこれがより厳密に適用されます。 可能な場合は、ヘッダー値をユニコードとして渡さないようにすることをお勧めします。