APIテストの際には、JSONデータを使用してデータを送信することがよくあります。Python環境でJSONデータをPOSTするには、Pythonのrequestsライブラリーが使われることが多いのです。それでは、Python requestsを使って、JSONデータをPOSTするには、どうしたらいいですか?本文では、PythonのrequestsでJSONデータをPOSTする方法を皆さんに紹介します。
下記のボタンからApidogを無料取得し、利用を始めましょう👇👇👇
Python requestsとは?
Pythonのrequestsは、HTTPリクエストを送信するための非常に人気のあるライブラリです。requestsを使用することで、PythonプログラムがウェブページやAPIエンドポイントなどのリモートサーバーに対してGET、POST、PUT、DELETEなどのHTTPメソッドを使用してリクエストを送信し、レスポンスを受信することができます。
Python requestsの特徴
- HTTPリクエストをシンプルに作成できる直感的なAPIを提供しています
- GET、POST、PUT、DELETEなどのHTTPメソッドすべてに対応しています
- JSONデータ、認証、セッション管理などを簡単に実装できます
- レスポンスデータにアクセスするのが容易です
- HTTPヘッダやステータスコードのチェックもしやすい
このように、Web APIやHTTPベースのプログラミングを行う場合、Python Requestsは非常に便利でパワフルなライブラリです。マシンレーニングやデータ分析などでもよく利用されています。
JSONデータのPOST操作について
JSONは、キーと値のペアのコレクションを含むテキストベースのデータ形式です。データは、以下の形式で表現されます。
{
"キー1": "値1",
"キー2": "値2",
"キー3": "値3"
}
Web APIではHTTP通信でJSONデータの受け渡しといえば、特にJSONによるPOSTが最もよく使われる方法です。XMLよりもシンプルで読み書き性も良いため、多くの開発者がJSON POSTを推奨しています。JSONデータをPOSTすることについて以下のメリットがあります:
構造化データのやり取りができる
JSONはキーと値のペアで構成される構造化データ形式です。このため、クライアントとサーバーの間で複雑なデータ構造を扱うことができます。
オブジェクトのシリアライズ/デシリアライズが容易
PythonやJavaScriptといったプログラミング言語では、オブジェクトをJSONに変換するシリアライズと、その逆のデシリアライズが容易です。
読み書きが容易
JSONのフォーマットは人間にも読み書きしやすいテキストベースです。デバッグや処理の確認がしやすいです。
言語に依存しない相互運用性
JSONは言語に依存しないデータフォーマットのため、異なる言語間でもデータのやり取りができます。
それでは、Pythonというプログラミング言語を使っている場合、定番のAPIリクエストライブラリのrequestsでJSONデータをAPIエンドポイントにPOSTするには、どうしたらいいですか?次は、その詳細の手順を紹介するので、お見逃しないでください。
Python requestsでJSONをPOSTする
Pythonのrequestsライブラリを使ってJSONをPOSTすることを実現するために、一連の操作手順があると思います。次は、初心者にとってもわかりやすい手順を解説していこうと思います。
requestsのインストール
まずは、pipコマンドを使ってrequestsというライブラリをパソコンにインストールする必要があります。
pip install requests
requestsやJSONをインポート
requestsをインストールすると、それを利用し始めるには、まずはインポートする必要があります。また、JSONデータをPOSTするので、その同時にJSONをインポートする必要もあります。
import requests
import json
POSTデータの準備
どのようなJSONデータをPOSTするのかを前もって辞書形式で準備する必要があります。
data = {
"name": "John Smith",
"age": 30
}
データをJSON形式にエンコード
そして、次のコマンドを使用して、POSTするデータをPythonオブジェクトからJSON形式にエンコードします。
json_data = json.dumps(data)
POSTリクエストの送信
requests.postメソッドでJSONデータをPOSTします。ヘッダにContent-TypeをもJSONに指定します。
response = requests.post(
"http://api.example.com/users",
data=json_data,
headers={"Content-Type": "application/json"}
)
レスポンスの取得
最後に、レスポンスのステータスコード、JSONのレスポンス本文を定義や確認します。
print(response.status_code)
print(response.json())
以上は、requestsライブラリを使ったJSONデータのPOSTの詳細手順になります。この前にrequestsライブラリを使用することがないユーザーでも、上記の詳細ガイドを参照して、JSONデータをPOSTすることができると思います。
JSONをPOSTできるrequestsの実装コード
ということで、上記のステップに従って、実装コードを作成する場合は、その完全な実装コードは次のようになります。次のコードを実装することで、Python requestsを使用して、JSONデータをPOSTすることができます。
import json
import requests
# POSTするデータ
data = {
"name": "John Smith",
"age": 30
}
}
# データをJSONに変換
json_data = json.dumps(data)
# POSTメソッドでリクエストを送信、データはjsonパラメータに指定
response = requests.post(
"http://api.example.com/users",
data=json_data,
headers={"Content-Type": "application/json"}
)
print(response.status_code)
print(response.text)
Apidogで1クリックでJSONデータをPOST
Python requestsなどのライブラリの利用に慣れてきたユーザーにとって、それを使ってJSONデータをPOSTすることが便利ですが、それを使い慣れていない方、またはコーディングが知らない方にとって、より直感的で使いやすいAPI管理ツールがあるはずです。それは、日本語対応のGUIAPI管理ツールのApidogです。Apidogは非常に直感的なUIで、簡単にHTTPメソッド及び送信データの形式を選択することができます。また、APIの設計、仕様書生成、APIのテスト、モックなどのAPIライフサイクル管理の機能をも備えているので、API関連の作業なら、Apidogというツールを使えば簡単に処理できます。
最も重要なことに、ApidogはJSONデータの送信を行えるために最適化されています。リクエストを送信するときに、Bodyで直接にJSONを選択するだけで送信できるので、Header情報などを設定する必要もないので、非常に便利です。
上記のスクリーンショットのように、ApidogでAPIリクエストを送信する時に、HTTPメソッドをPOSTに指定した上、Bodyタブに切り替えて、JSONに指定しれば、JSONのデータを入力するだけで簡単にJSONをPOST送信できます。
Python requestsの実装コードをも自動生成
また、Apidogを使ってAPIリクエストを送信してレスポンスを取得すると、そのリクエスト情報をユースケースとして保存することも可能です。また、Pythonのrequestsの実装コードを手動で書きたくない場合でも、Apidogを使って、1クリックでそれを生成することができるので、実装コードを手動で記述しなくても、簡単に取得できます。
ステップ⒈Apidogで先に保存したAPIかRequestを選択して、右側パネルで「コード生成」にガーソルを置き、「クライアントコードを生成」を選択します。
ステップ⒉コード生成ウィンドウで、「Python」を選択し、「Requests」を選択すると、Requestsモジュールの実装コードを生成することができます。
まとめ
この記事は、Pythonのrequestsライブラリを使ってJSONデータをPOSTする方法について解説しました。あまりPython requestsライブラリを使用した経験がないユーザーでも本文で紹介した操作手順を参照して操作を行えると思います。
また、Apidogを使えば、GUIベースの操作でリクエスト作成時にBodyタブでJSON形式を選択し、データを入力するだけで簡単に送信できます。Apidogでは、送信したリクエストの情報を保存し、Pythonとrequestsによる実装コードも自動生成できる機能も備えているので、非常に便利なツールになります。特にコーディングが嫌なユーザーも、GUIツールApidogの登場に伴い、より簡単かつ視覚的にJSONをPOSTできるようになるのでしょう。