Pythonで外部サービスや自作のサーバーと通信する際によく使われるのが「requests」ライブラリです。シンプルな構文でHTTPリクエストを送信でき、API呼び出しに広く活用されています。ここではrequestsの基本から、GETやPOSTの使い方、ヘッダーやエラー処理までを解説します。
requestsのインストール
まずはpipでインストールします。標準ライブラリには含まれていないため、事前に導入が必要です。
pip install requests
GETリクエストでデータを取得する
もっとも基本的な使い方は、指定したURLにGETリクエストを送り、レスポンスを取得する方法です。
import requests
url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.get(url)
if response.status_code == 200:
print(response.json())
else:
print("エラー:", response.status_code)
status_codeでレスポンスの成功可否を判定できます。APIによってはJSONが返るのでresponse.json()で辞書形式に変換して扱えます。
クエリパラメータを付ける
params引数に辞書を渡すことで、クエリ文字列を自動的に組み立ててリクエストできます。
params = {"userId": 1, "limit": 5}
response = requests.get("https://jsonplaceholder.typicode.com/posts", params=params)
print(response.url) # 実際のアクセスURLを確認
print(response.json())
POSTリクエストでデータを送信する
APIにデータを送信する場合はPOSTメソッドを使います。JSON形式のデータはjson引数で渡すのが簡単です。
data = {"title": "新しい投稿", "body": "本文", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=data)
print(response.status_code)
print(response.json())
ヘッダーを追加する
認証トークンやコンテンツタイプを指定する場合はheaders引数を利用します。
headers = {"Authorization": "Bearer YOUR_TOKEN", "Accept": "application/json"}
response = requests.get("https://api.example.com/user", headers=headers)
print(response.json())
タイムアウトと例外処理
ネットワーク障害や応答遅延に備えて、timeoutを設定しtry-exceptで例外を処理するのが実用的です。
try:
response = requests.get("https://api.example.com/data", timeout=5)
response.raise_for_status() # HTTPエラーを例外として処理
print(response.json())
except requests.exceptions.Timeout:
print("タイムアウトしました")
except requests.exceptions.RequestException as e:
print("リクエストエラー:", e)
まとめ
requestsライブラリを使うと、PythonでAPIを簡単に呼び出せます。GETでデータ取得、POSTで送信、paramsでクエリ指定、headersで認証、timeoutと例外処理で堅牢化、といった流れを押さえれば、実践的なAPI連携をすぐに実装できます。