FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
生徒
「PythonのFlaskで、外部から送られてくる情報を受け取るにはどうしたらいいですか?」
先生
「FlaskではPOST(ポスト)リクエストという方法を使って、外から送られてきたデータを受け取ることができますよ。」
生徒
「POSTってなんですか?難しそうです……」
先生
「心配いりません!郵便を受け取るようなイメージで考えればOKです。ゆっくり一緒に学んでいきましょう!」
1. POSTリクエストとは?初心者向けにやさしく解説
「POSTリクエスト」とは、インターネットを通じてサーバーに“情報を送る”ための仕組みです。たとえば、会員登録フォームで名前やパスワードを入力して送信すると、その情報はPOSTという方法で送られています。つまりPOSTは「相手にそっと荷物を渡す」ようなイメージで捉えるとわかりやすいでしょう。
そしてFlaskを使えば、この“荷物を受け取るポスト”を自分で作ることができます。あなたが作ったアプリが住所(URL)を持ち、その場所に向けて送られた情報を受け取る仕組みを簡単に準備できます。Webアプリ開発の基本になる部分なので、ゆっくりイメージをつかんでいきましょう。
以下は、POSTリクエストが届いたことをシンプルに確認するだけのミニサンプルです。まだJSONの処理などは行いませんが、「POSTで送られてきたことをFlaskが受け取れる」という最初の感覚をつかむのに役立ちます。
from flask import Flask, request
app = Flask(__name__)
@app.route('/hello', methods=['POST'])
def hello_post():
return "POSTリクエストを受け取りました!"
if __name__ == '__main__':
app.run(debug=True)
このコードを実行して、外部から/helloにPOSTリクエストを送ると「POSTリクエストを受け取りました!」という返信が返ってきます。これが“受け取る側”の最も基本的な仕組みです。まずは「FlaskはPOSTを受け取れるんだ」という感覚をつかむことから始めましょう。
2. JSON(ジェイソン)とは?初心者にもわかるように説明
次に登場する「JSON(ジェイソン)」とは、データを整理してわかりやすく保存したり送ったりするための形式です。テキストで書かれているので人間にも読みやすく、パソコンにとっても扱いやすいため、多くのWebサービスで使われています。住所や名前などの情報を、箱にラベルを付けて並べるようなイメージで理解するとわかりやすいでしょう。
JSONは必ずキー(名前)と値のセットで書かれます。たとえば以下の例は、「名前」と「年齢」という2つの情報を持つシンプルなJSONです。
{
"name": "Taro",
"age": 25
}
この形は、「name というラベルには Taro、age というラベルには 25という値が入っていますよ」という意味です。まるで、ノートに名前と数字を書き込んで整理するような感覚です。Flask では、このJSONをそのまま受け取り、Pythonの変数として扱うことができるので、とても相性のよいデータ形式と言えます。
以下は、受け取ったJSONをそのまま表示するだけの簡単なサンプルです。これで「FlaskがJSONをどのように見ているか」がイメージしやすくなります。
from flask import Flask, request
app = Flask(__name__)
@app.route('/show', methods=['POST'])
def show_json():
data = request.get_json() # JSONを受け取る
return f"受け取ったJSONは:{data}"
if __name__ == '__main__':
app.run(debug=True)
このサンプルにJSONを送ると、Flaskはそのままの形で内容を返してくれます。まずはJSONがどう見えるのか、自分で送って確かめてみると理解が一気に深まるでしょう。
3. FlaskでPOSTリクエストを受け取る準備をしよう
POSTリクエストを受け取るためには、まずFlaskを使える状態にしておく必要があります。Flaskはとても軽量なWebフレームワークで、初心者でも簡単に扱えることが大きな魅力です。まずはパソコンにFlaskをインストールして、Webアプリを動かすための“土台”を整えていきましょう。
ターミナル(黒い画面)を開いて、次のコマンドを入力します。これは「Flaskという道具をパソコンに取り入れてください」という意味の命令です。
pip install flask
インストールが成功すると、Flaskを使ったWebアプリをすぐに作れる状態になります。次に、Flaskアプリの基本となる「最初の1ページ」を作ってみましょう。以下のコードは、アプリが正しく動くかどうか確認するための最もシンプルな例です。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Flaskの準備ができました!"
if __name__ == '__main__':
app.run(debug=True)
このコードを実行し、ブラウザで http://localhost:5000 にアクセスすると、「Flaskの準備ができました!」と表示されます。これが確認できれば、POSTリクエストを扱うための準備はばっちりです。ここから先は、実際にデータを受け取るコードに進んでいくことができます。
4. 実際にFlaskでJSONデータを受け取るサンプルコード
ここでは、Flaskを使って実際にPOSTリクエストからJSONデータを受け取る方法を、初心者向けにわかりやすく紹介します。JSONの中身をPythonで扱える形に変換してくれるため、送られてきた情報をそのままアプリで利用できます。まずは「どんなふうに受け取れるのか」を感覚的に掴むことがとても大切です。
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/receive', methods=['POST'])
def receive_data():
data = request.get_json() # JSONデータを受け取る
name = data.get('name')
age = data.get('age')
# 受け取ったデータをそのままメッセージにして返す
return jsonify({
'message': f'{name}さん({age}歳)、データを受け取りました!'
})
if __name__ == '__main__':
app.run(debug=True)
このサンプルでは、外部から送られてきたJSONを request.get_json() で取り出し、Pythonの辞書のように扱える状態にしています。そのため data.get('name') のように、項目ごとに安全に取り出すことができます。初心者の方でも、「郵便物をひとつずつ開いて中身を見る」ような感覚で理解できるはずです。
送られてきたJSONに含まれる名前や年齢を取り出して、そのままメッセージとして返しているため、どの値が届いているかをすぐに確認できます。まずはこの仕組みを動かしてみることで、POSTリクエストがどのようにアプリへ届くのか自然と理解できるようになります。
5. 実際にJSONデータを送るには?Postmanの活用
プログラムが書けても、実際にデータを送ってみないと動作確認できません。そこで便利なのが「Postman(ポストマン)」という無料のアプリです。これは、データを送る練習ができるツールです。
Postmanを使って、以下のようなJSONデータをPOST送信します:
{
"name": "Hanako",
"age": 30
}
送り先のURLには http://localhost:5000/receive と入力します。送信すると、以下のような結果が返ってきます。
{
"message": "Hanakoさん(30歳)、データを受け取りました!"
}
このように、Flaskが外部からのPOSTリクエストとJSONデータをしっかり受け取っていることが確認できます。
6. request.get_json()ってなに?簡単に解説
request.get_json()は、「送られてきたJSONデータを取り出すための命令」です。
例えるなら、「郵便受けから手紙を取り出す動作」です。JSONデータという「手紙」を読み取るために使います。
この命令を使うことで、名前や年齢といった情報をPythonの変数に入れることができるのです。
7. FlaskのルーティングとPOSTの違い
Flaskでは、@app.route()を使って、どのURLでどんな処理をするかを指定します。
今回のコードでは、/receiveというURLでmethods=['POST']と書いています。これは「この場所はPOST専用ですよ」という意味です。
もしmethods=['GET']と書いた場合は、「受け取る」ではなく「取りに行く」という意味になります。
8. 送られてくるデータがない場合のエラー対策
データが正しく送られてこないとき、プログラムが止まってしまうことがあります。そんなときの対策も入れておくと安心です。
@app.route('/receive', methods=['POST'])
def receive_data():
data = request.get_json()
if not data:
return jsonify({'error': 'データが送られていません'}), 400
name = data.get('name', '名前なし')
age = data.get('age', '年齢不明')
return jsonify({
'message': f'{name}さん({age}歳)、データを受け取りました!'
})
このように書くことで、何も送られてこなかったときにも丁寧にエラーメッセージを返すことができます。
まとめ
FlaskでPOSTリクエストを受け取り、JSONデータを処理する仕組みを学ぶと、Webアプリケーションがどのように外部からのデータを扱っているのかが一気に理解しやすくなります。とくに初心者の方にとっては、POSTという言葉そのものが難しく感じられることもありますが、実際には郵便を受け取るように「データを受信するための方法」にすぎません。インターネットではフォームの送信やログイン、設定情報の更新など、さまざまな処理がPOSTリクエストによって行われています。これを自分のアプリで扱えるようになると、Web開発の幅が大きく広がります。
JSONというデータ形式も、現代のWebアプリでは欠かせない存在です。JSONは人間にも読みやすく、プログラムにも扱いやすいため、多くのAPIが標準的に採用しています。今回の例では名前や年齢を受け取りましたが、実際のアプリでは住所や商品の情報、ユーザー設定、センサーから送られるデータなど、さまざまな情報がJSON形式でやり取りされます。こうした仕組みを理解することで、API同士の連携や外部サービスとの統合もスムーズに進められるようになります。
また、POSTリクエストを受け取る際には、Flaskの@app.route()、methods=['POST']、request.get_json()といった重要な要素が登場します。それぞれの意味を理解しながら進めることで、Webアプリの内部でどのようにデータが流れているのかを自然にイメージできるようになります。たとえば、ルーティングは「どのURLに来たデータをどの関数で処理するか」を決めるものですし、get_json()は送られてきたJSONデータを読み取るための入り口です。こうした基礎がしっかりしていると、より複雑なAPIも落ち着いて扱うことができます。
さらに、エラーハンドリングも大切な学習ポイントです。実際の開発では「データが送られてこない」「形式が違う」「必要な項目が抜けている」など、プログラムが想定していない状況が頻繁に起こります。そのため、データが空だった場合や不正な内容だった場合にどう対応するかを考えておくことは非常に重要です。今回紹介したように、400というコードを使って丁寧にエラーメッセージを返すことは、APIを使う側のユーザーにも親切です。
このように、FlaskでPOSTリクエストとJSONの受け取り方を理解すると、Webアプリケーション開発に必要な基礎がしっかり身につきます。学んだ内容を生かして、オリジナルのAPIやフォーム処理、外部サービスとの連携などにもどんどん挑戦してみてください。
POSTリクエスト受け取りの基本コードまとめ
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/receive', methods=['POST'])
def receive_data():
data = request.get_json()
if not data:
return jsonify({'error': 'データが送られていません'}), 400
name = data.get('name', '名前なし')
age = data.get('age', '年齢不明')
return jsonify({
'message': f'{name}さん({age}歳)、データを受け取りました!'
})
if __name__ == '__main__':
app.run(debug=True)
実際にこのコードを動かしながら、JSONデータがどのように処理されて返却されるかを確認してみると、より理解が深まりやすくなります。いろいろな値を送ってみたり、エラーをわざと起こしてみたりすると、学習がさらに楽しくなるはずです。
生徒
「先生、POSTリクエストって難しいと思っていましたが、仕組みがわかると意外とシンプルなんですね。」
先生
「その通りですよ。データを送る方法のひとつと考えれば、自然と理解できます。JSONの形にも慣れてきたでしょう?」
生徒
「はい!JSONは読みやすくて扱いやすいので、もっといろいろなデータを送ってみたくなりました。」
先生
「よい姿勢ですね。POSTと組み合わせると、アプリはもっと実用的になります。エラーメッセージの返し方も覚えておくと、使う側への気配りにもなりますよ。」
生徒
「たしかに、丁寧に返すと使いやすさが全然違いますね。自分でもこういうAPIを作れるように練習してみます!」
先生
「ぜひ挑戦してみてください。手を動かすほど理解は深まりますよ。」