全般

[Python] requestsライブラリでJSONデータを送受信する方法

今回は、PythonのrequestsライブラリでJSONデータを送受信する方法をご紹介します。

requestsライブラリとJSONデータの概要

Pythonのrequestsライブラリは、HTTPリクエストを簡単に扱える便利なツールです。

特にJSON形式のデータを送受信する場合、Pythonの辞書型との自動変換がスムーズに行えるため、さまざまなAPIとの連携に活用できます。

このライブラリでは、JSON形式のデータを扱う際に以下のようなポイントがあります。

  • 送信時: json引数にPythonの辞書を渡すだけで自動的にJSON変換される
  • 受信時: レスポンスオブジェクトの.json()メソッドでJSON文字列をPythonの辞書型に変換できる

JSONデータを送信する方法

まずは、POSTリクエストでJSONデータを送信する方法です。

以下の例では、ユーザー名とパスワードを送信するイメージを示しています。

上記のようにrequests.post()json=引数を指定すると、内部でContent-Type: application/jsonが自動的に設定されます。

そのため、ヘッダーを明示的に追加しなくてもJSON形式で送信できます。

PUTリクエストで更新処理を行う場合

更新処理でデータを送信する場合も、POSTと同様の手順でjson引数を利用できます。

PUTリクエストはリソースの更新、DELETEリクエストはリソースの削除に利用されます。

DELETE時にサーバーから指示がある場合は、同様にjson=引数でデータを渡します。

JSONデータを受信する方法

次に、GETリクエストでJSONデータを取得する例を示します。

受信したレスポンスからJSONを取り出すには、response.json()メソッドを利用します。

サーバーが返すデータが必ずしもJSON形式とは限らない場合もあるため、ValueErrorなどをハンドリングできるようにしておくと安心です。

カスタムヘッダーやタイムアウトの指定

APIトークンなどの認証が必要な場合、ヘッダーに情報を付与する必要があります。

また、タイムアウトを設定しておくと、サーバーからの応答が遅い場合でもプログラムが長時間停止することを防げます。

よくあるエラーや注意点

PythonのrequestsライブラリとJSONを扱う際によく発生するエラーや注意点をまとめます。

  • JSONDecodeErrorValueError:

    サーバーから受信したデータがJSON形式でない場合、response.json()呼び出しでエラーが発生します。

  • HTTPエラー:

    raise_for_status()を利用すると、ステータスコードが200番台以外の場合に例外を発生させることが可能です。

  • タイムアウト:

    通信が長引く場合はtimeoutパラメータを設定し、プログラムの停止を防ぎます。

  • SSL証明書の検証:

    HTTPS接続で証明書の検証が必要な場合は、verifyパラメータを利用してください。

  • APIの仕様遵守:

    使用するAPIのドキュメントをよく読み、正しいエンドポイントとHTTPメソッドを設定しましょう。

また、実際に使用する際は、できるだけエラー処理を細かく行い、レスポンスを常にチェックしておくことをおすすめします。

まとめ

Pythonのrequestsライブラリは、JSONデータの送受信をシンプルに実現できます。

送信時はjson引数、受信時はresponse.json()メソッドを使うのがポイントです。

エラー処理やタイムアウトなど、細かい点に気を配れば、より堅牢な実装が可能になります。