PythonでAPI操作をマスター!requestsライブラリの使い方(GET・POST・認証)

Pythonのrequestsライブラリを使ったAPI操作を解説。GET、POST、JSONデータの送受信、認証(Basic認証・APIキー)の実装方法をサンプルコード付きで紹介。

PythonAPIrequestsJSONGETPOST認証2026/5/25

はじめに

PythonでAPIを操作する際に最もよく使われるライブラリが requests です。この記事では、requests を使った基本的なGETリクエスト、POSTリクエスト、JSONデータの扱い方、そして認証(Basic認証やAPIキー)の実装方法を、実際のコード例とともに解説します。

requestsライブラリのインストール

requests は標準ライブラリではないため、事前にインストールが必要です。

pip install requests

インストール後は、スクリプト内で import requests として利用します。

基本的なGETリクエスト

最もシンプルなGETリクエストの例です。公開API(例:JSONPlaceholder)に対してリクエストを送信します。

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts/1') print(response.status_code) # 200 print(response.json()) # JSONデータをPythonの辞書として取得

response.status_code でHTTPステータスコードを確認できます。response.json() はレスポンスボディをJSONとしてパースし、Pythonの辞書(またはリスト)を返します。

クエリパラメータの付与

APIにクエリパラメータを渡すには、params 引数に辞書を指定します。

params = {'userId': 1, 'id': 1}
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)
print(response.url)  # 実際のURL: https://jsonplaceholder.typicode.com/posts?userId=1&id=1
print(response.json())

POSTリクエストでデータを送信

POSTリクエストでは、data または json 引数を使ってデータを送信します。

フォームデータとして送信

data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', data=data)
print(response.status_code)  # 201
print(response.json())

JSONとして送信

json 引数を使うと、自動的にJSON形式に変換され、Content-Typeヘッダーが application/json に設定されます。

import json

data = {'title': 'foo', 'body': 'bar', 'userId': 1} response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data) print(response.status_code) # 201 print(response.json())

レスポンスの処理

ステータスコードの確認

if response.status_code == 200:
    print('成功')
elif response.status_code == 404:
    print('リソースが見つかりません')

エラーハンドリング

raise_for_status() を使うと、ステータスコードがエラー系(400以上)の場合に例外を送出します。

try:
    response = requests.get('https://jsonplaceholder.typicode.com/invalid')
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(f'HTTPエラー: {err}')

認証の実装

Basic認証

auth パラメータにユーザー名とパスワードのタプルを渡します。

from requests.auth import HTTPBasicAuth

response = requests.get('https://api.example.com/data', auth=HTTPBasicAuth('user', 'pass')) <h1>簡略記法: auth=('user', 'pass')でも可</h1>

APIキー認証

APIキーをヘッダーに含める一般的な方法です。

headers = {'Authorization': 'Bearer YOUR_API_KEY'}
response = requests.get('https://api.example.com/data', headers=headers)

またはクエリパラメータとして渡す場合もあります。

params = {'api_key': 'YOUR_API_KEY'}
response = requests.get('https://api.example.com/data', params=params)

タイムアウトの設定

タイムアウトを設定しないと、応答がない場合にプログラムが停止する可能性があります。timeout パラメータで秒数を指定します。

response = requests.get('https://api.example.com/data', timeout=5)

セッションの利用

複数のリクエストで接続を再利用したり、共通のヘッダーを設定するには Session オブジェクトを使います。

with requests.Session() as session:
    session.headers.update({'Authorization': 'Bearer YOUR_API_KEY'})
    response1 = session.get('https://api.example.com/endpoint1')
    response2 = session.get('https://api.example.com/endpoint2')

まとめ

この記事では、Pythonの requests ライブラリを使ったAPI操作の基本を解説しました。

  • GETリクエストの送信とパラメータの付与
  • POSTリクエストによるデータ送信(フォーム形式・JSON)
  • レスポンスのステータス確認とエラーハンドリング
  • Basic認証やAPIキーを使った認証方法
  • タイムアウトやセッションの活用
  • requests はシンプルで直感的なAPIを提供しており、多くのAPIクライアントとして利用されています。ぜひ実際のプロジェクトで活用してみてください。