【Python】requestsでAPIを呼び出す方法

【Python】requestsでAPIを呼び出す方法 Python

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連携をすぐに実装できます。