Pythonで簡単にAPI通信 requestsライブラリのサンプルコード

プログラミング

pythonのrequestsを使ってAPI通信の基礎構文・サンプルコードを解説していきたいと思います。
ふとAPIをたたきたい時に、忘れてしまっており都度調べて実装するのが面倒だったので、すぐにコピペできるようにパターンごとに作成しました。

requestsとは

requestsはPythonでHTTPリクエストを簡単に扱うためのライブラリで、APIにアクセスしたり、データを送受信したりする際に非常に便利です。具体的には、RESTful APIを利用する際のクライアントとして使います。
記述もかなりシンプルで、個人的にはJavascriptのfetchやCurlコマンドより分かりやすいので、使いやすいと思っています。

事前準備

まず、requestsをインストールする必要があります。通常、以下のコマンドでインストールできます

pip install requests

requestsのインポートをします。

import requests


記述パターン(コピペ用)

1. GETリクエスト

シンプルにGETリクエストを実行します。
status_codeを使えば、OK(200)、NG(4XX、5XX)の情報で処理を分岐させることもできます。

response = requests.get('https://www.example.com')
print(response.status_code) #ステータスコード
print(response.text) #レスポンス本文
print(response.json()) #JSONから辞書へ変換

2. GETリクエスト(クエリパラメータ)

GETリクエストでパラメタを指定する場合は、引数にparamsを使用します。

params = {'param1': 'python', 'param2': 'requests'}
response = requests.get('https://www.example.com', params=params)

3. GETリクエスト(カスタムヘッダー)

カスタムヘッダーを使用する場合は、headersを引数に設定します。API認証などヘッダー情報が必要な場合に定義します。

headers = {'User-Agent': 'MyApp', 'Authorization': 'Bear Token'}
response = requests.get('https://www.example.com', headers=headers)


4. POSTリクエスト(フォームデータ)

フォームデータは、Contet-Typeヘッダーがapplication/x-www-form-urlencodedの場合に設定されます。dataは辞書型でURLエンコードされて送信されます。

key1=value1&key2=value2

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com', data=data)


5. POSTリクエスト(JSONデータ)

JSONデータはContent-Typeがapplication/jsonに設定されます。データは辞書からJSONに変換されて送信されます。

{“key1”: “value1”, “key2”: “value2”}

json_data = {'name': 'John', 'age': 30}
response = requests.post('https://www.example.com', json=json_data)


6. エラー処理

API通信はクライアントもしくはサーバー側などで通信エラーが発生する可能性があるので、エラー処理を実装しておきます。raise_for_status()はステータスコード200以外の場合にエラーを起票します。
try~except文で、エラーハンドリングを行います。

try:
    response = requests.get('https://api.github.com/nonexistent')
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(f"エラー内容: {err}")

タイトルとURLをコピーしました