HTTPXはPython用のHTTPクライアントライブラリとして、HTTPリクエストを便利に送信することができます。本文では、HTTPXの基本情報を紹介した上、サンプルコードでHTTPXの使い方も分かりやすく解説していきたいと思います。
また、Apidogは完全無料で利用可能なツールになりますが、次のボタンからこのツールを無料で取得することが可能です。
HTTPXとは
HTTPXはPython用のHTTPクライアントライブラリです。非同期処理に対応しており、高速で使いやすいAPIを提供しています。

HTTPXの特徴
HTTPXは非常に汎用されているPythonのライブラリとして、主に次のような特徴があります:
- 非同期操作サポート: asyncio、trio、curio、asyncioなどの非同期ライブラリと連携できます。
- HTTP/1.1およびHTTP/2サポート: 最新のHTTPプロトコルをサポートし、高速な通信が可能です。
- プールされたコネクション: 効率的な再利用のため、コネクションをプールする機能があります。
- レスポンスストリーミング: レスポンスの一部が到着次第、それを処理できます。
- アップロードとダウンロードの進捗表示: アップロードやダウンロード中の進捗をリアルタイムで表示できます。
- ファイル、バイトストリーム、同期、非同期のサポート: さまざまな形式のデータを送受信できます。
- リトライとバックオフのロジック: 一時的なエラーに対して自動的にリトライする機能があります。
HTTPXは requests ライブラリを使ったことのある人でも簡単に利用でき、古くからのHTTPクライアントライブラリに比べて高速で、非同期処理にも対応しているため、現代のウェブアプリケーション開発に適しています。
HTTPXの使い方|サンプルコードで解説
それでは、HTTPXを使って、HTTPリクエストを送信するには、どうしたらいいですか?次は、サンプルコードを使って、HTTPXの使い方を詳しく解説していこうと思います。
インストール
pip install httpx
GETリクエスト
import httpx
# 同期リクエスト
r = httpx.get('https://www.example.com')
print(r.status_code)
print(r.text)
# 非同期リクエスト
async with httpx.AsyncClient() as client:
r = await client.get('https://www.example.com')
print(r.status_code)
print(r.text)
POSTリクエスト
import httpx
# JSONデータを送信
data = {'key': 'value'}
r = httpx.post('https://httpbin.org/post', json=data)
print(r.json())
# 非同期でJSONを送信
async with httpx.AsyncClient() as client:
r = await client.post('https://httpbin.org/post', json=data)
print(r.json())
ヘッダーとパラメータの設定
headers = {'Authorization': 'Bearer TOKEN'}
params = {'query': 'value'}
r = httpx.get('https://example.com', headers=headers, params=params)
ファイルのアップロード
files = {'file': open('report.pdf', 'rb')}
r = httpx.post('https://example.com/upload', files=files)
レスポンスストリーミング
with httpx.stream('GET', 'https://example.com/large-file') as r:
for data in r.iter_bytes():
# データを処理
カスタムヘッダー、Cookie、クライアントセッション
client = httpx.Client(headers={'X-Custom': 'value'}, cookies={'user_id': '123'})
r = client.get('https://example.com')
HTTPXには他にも進捗表示、SSL証明書の検証、タイムアウト設定、プロキシ設定など多くの機能があります。公式ドキュメントを参照すると良いでしょう。
ApidogでHTTPリクエストをより便利に送信
HTTPXは、Python環境では広く使われているHTTPクライアントライブラリです、コードベースで習得するまでに一定のコストがかかります。そこで、ここではApidogという直感的で使いやすいGUIのAPIクライアントツールを皆さんに紹介します。Apidogを使用すると、どの種類のHTTPリクエストをも直感的なUIで送信できるので、非常に便利です。

Apidogは、十数種のHTTPメソッドにも対応可能なので、GET、POST、PUT、DELETEなどのリクエストを送信する場合でも、上記画像のように直感的なUIで簡単に指定してリクエストを送信することができます。
HTTPリクエストを保存してドキュメンテーションも生成
また、Apidogを使ってHTTPリクエストを送信した後、そのリクエストを保存して再利用することも可能です。そして、必要に応じて、保存したHTTPリクエストからドキュメンテーションを簡単な1クリックだけで生成することもできます。
Apidogによって生成されたドキュメンテーションの例:

まとめ
本文ではHTTPXの基本的な使い方を、GETリクエスト、POSTリクエスト、ヘッダー/パラメータ設定、ファイルアップロード、レスポンスストリーミングなどのサンプルコードとともに解説しました。HTTPXを使えば、同期/非同期のどちらのスタイルでも、さまざまなHTTPリクエストを柔軟に送信できることがわかります。
一方で、HTTPXのようなライブラリを直接コードで使うには一定の習熟が必要です。そこで、GUIベースのAPIクライアントツール「Apidog」を活用するのも手です。ApidogではUIを操作するだけで簡単にHTTPリクエストを送信でき、リクエストを保存したり、ドキュメントを自動生成したりもできます。初心者でもAPIの開発が格段に容易になるでしょう。
HTTPXの強力な機能とApidogのような便利ツールを組み合わせることで、効率的でモダンなAPIの開発が可能になります。状況に応じて適切なツールを使い分けることをおすすめします。