Httpx は、最新の使いやすい HTTP クライアントとサーバーを提供する Python ライブラリです。 Httpx は Python の非同期フレームワークで動作し、WebSocket と HTTP/2 をサポートします。 Httpx は、優れたパフォーマンス、セキュリティ、さまざまなプロトコル、エンコーディング、認証スキームに対する柔軟な構成を提供します。
Httpx ライブラリのインストールは非常に簡単です。 pip パッケージ マネージャーを使用して次のコマンドを実行するだけです:
pip install httpx
Python 3.7 以前を使用している場合は、Httpx の非同期依存関係 aiohttp をインストールする必要があります。
次のコマンドを実行してインストールできます。
pip install httpx[aiohttp]
Httpx を使用した HTTP リクエストの送信は非常に簡単です。 Httpx を使用して GET リクエストを送信する簡単な例を次に示します。
import httpx response = httpx.get('https://www.baidu.com') print(response.status_code) print(response.text)
この例では、Httpx の get メソッドを使用して GET リクエストを送信しました。要求された URL は https://www.baidu.com です。このメソッドは、応答ステータス コードと応答テキストにアクセスするために使用できる Response オブジェクトを返します。
Httpx は、GET、POST、PUT、DELETE、HEAD、OPTIONS など、さまざまな HTTP メソッドをサポートしています。 Httpx メソッドを使用してこれらのリクエストを送信できます。
ここにいくつかの例があります:
import httpx response = httpx.post('https://www.baidu.com', data={'key': 'value'}) response = httpx.put('https://www.baidu.com', data={'key': 'value'}) response = httpx.delete('https://www.baidu.com') response = httpx.head('https://www.baidu.com') response = httpx.options('https://www.baidu.com')
上記の例の各リクエストは、Httpx メソッドを使用して送信できます。これらのメソッドのほとんどは、データ、ヘッダー、クエリ パラメーターなどのパラメーターの受け渡しをサポートしています。
Httpx は非同期 HTTP リクエストもサポートしています。以下は、Httpx を使用して非同期 GET リクエストを送信する簡単な例です。
import httpx import asyncio async def get_request(): async with httpx.AsyncClient() as client: response = await client.get('https://www.baidu.com') print(response.status_code) print(response.text) asyncio.run(get_request())
この例では、Httpx の AsyncClient クラスを使用して非同期 GET リクエストを送信する get_request という名前の非同期関数を作成します。非同期関数では、async with ステートメントを使用して Httpx の非同期クライアントを作成します。この方法でクライアントを作成すると、リクエストの完了後にクライアントが自動的に閉じられます。次に、await キーワードを使用して応答を非同期に待機し、応答オブジェクトから応答ステータス コードと応答テキストにアクセスします。
同期リクエストと同様に、Httpx の非同期クライアントもさまざまな HTTP メソッドをサポートしています。
ここにいくつかの例があります:
import httpx import asyncio async def post_request(): async with httpx.AsyncClient() as client: response = await client.post('https://www.baidu.com', data={'key': 'value'}) print(response.status_code) print(response.text) asyncio.run(post_request())
HTTP リクエストを送信するときは、通常、リクエスト ヘッダーを設定する必要があります。 Httpx を使用すると、リクエスト メソッドで headers パラメータを渡すことでリクエスト ヘッダーを設定できます。
これは例です:
import httpx headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = httpx.get('https://www.baidu.com', headers=headers) print(response.status_code) print(response.text)
この例では、headers パラメーターを使用して User-Agent という名前の要求ヘッダーを設定します。
Httpx を使用すると、HTTP リクエストを送信するときにリクエスト パラメータを設定できます。
ここにいくつかの例があります:
import httpx params = {'key1': 'value1', 'key2': 'value2'} response = httpx.get('https://www.baidu.com', params=params) print(response.status_code) print(response.text)
この例では、params パラメーターを使用して 2 つのクエリ パラメーター key1 と key2 を設定します。
POST、PUT、および DELETE リクエストを送信するときは、通常、リクエスト本文にデータを含める必要があります。 Httpx では、data パラメーターを使用してリクエスト本文にデータを設定できます。
次は例です:
import httpx data = {'key': 'value'} response = httpx.post('https://www.baidu.com', data=data) print(response.status_code) print(response.text)
この例では、data パラメーターを使用して、key という名前のリクエスト本文パラメーターを設定します。
Httpx では、json パラメーターを使用して JSON データを送信できます。
以下は例です:
import httpx data = {'key': 'value'} response = httpx.post('https://www.baidu.com', json=data) print(response.status_code) print(response.text)
この例では、json パラメーターを使用して、key という名前の JSON リクエスト本文パラメーターを設定します。
HTTP リクエストを送信するときは、通常、タイムアウトを設定する必要があります。 Httpx では、timeout パラメーターを使用してタイムアウトを設定できます。
これは例です:
import httpx response = httpx.get('https://www.baidu.com', timeout=5) print(response.status_code) print(response.text)
この例では、timeout パラメーターを使用してタイムアウトを 5 秒に設定します。
Httpx は、問題の診断と解決に役立つさまざまな種類の例外をスローできます。一般的な例外をいくつか示します。
httpx.HTTPError: HTTP エラーが発生したときに発生します。
httpx.RequestError: リクエスト エラーが発生したときに発生します。
httpx.NetworkError: ネットワーク エラーが発生したときに発生します。
httpx.TimeoutException: タイムアウトが発生すると発生します。
これらの例外を処理する場合、try/excel ステートメントを使用して例外をキャッチし、適切なアクションを実行できます。以下に例を示します。
import httpx try: response = httpx.get('https://www.baidu.com') response.raise_for_status() except httpx.HTTPError as http_error: print(f'HTTP error occurred: {http_error}') except httpx.RequestError as request_error: print(f'Request error occurred: {request_error}') except httpx.NetworkError as network_error: print(f'Network error occurred: {network_error}') except httpx.TimeoutException as timeout_error: print(f'Timeout error occurred: {timeout_error}') else: print(response.status_code) print(response.text)
この例では、try/excel ステートメントを使用して、発生する可能性のあるすべての例外をキャッチし、例外の種類に基づいて適切なアクションを実行します。
Httpx を使用すると、SSL 証明書を検証して、サーバーへの安全な接続を確保できます。デフォルトでは、HTTP は SSL 証明書を検証します。証明書の検証を無効にする必要がある場合は、verify パラメータを False に設定できます。
これは例です:
import httpx response = httpx.get('https://www.baidu.com', verify=False) print(response.status_code) print(response.text)
この例では、verify パラメーターを False に設定して、SSL 証明書の検証を無効にします。
Httpx では、プロキシを使用して HTTP リクエストを送信できます。以下に例を示します。
import httpx proxies = { 'http://http-proxy-server:8080', 'https://https-proxy-server:8080' } response = httpx.get('https://www.baidu.com', proxies=proxies) print(response.status_code) print(response.text)
この例では、proxies パラメータを使用して 2 つのプロキシ サーバーを設定します。
Httpx では、files パラメーターを使用してファイルをアップロードできます。以下に例を示します:
import httpx files = {'file': ('file.txt', open('file.txt', 'rb'))} response = httpx.post('https://www.baidu.com', files=files) print(response.status_code) print(response.text)
在这个示例中,我们使用 files 参数上传了名为 file.txt 的文件。
Httpx 允许您使用 cookies 参数发送 cookie。以下是一个示例:
import httpx cookies = {'name': 'value'} response = httpx.get('https://www.baidu.com', cookies=cookies) print(response.status_code) print(response.text)
在这个示例中,我们使用 cookies 参数发送了名为 name 的 cookie。
以上がPythonhttpxの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。