FlaskでGET・POSTリクエストを処理する方法を完全ガイド!初心者でもわかる超入門
生徒
「Flaskってよく聞くんですが、そもそも何ができるんですか?」
先生
「Flask(フラスク)は、Pythonというプログラミング言語で作られた、Webアプリを作るためのツールです。Webサイトを作るときに使われますよ。」
生徒
「Webアプリって、たとえば何ができるんですか?」
先生
「たとえば、ログイン画面を作ったり、入力フォームからデータを送ったりすることができます。今日は、その中でも『GETリクエスト』と『POSTリクエスト』の処理方法を学びましょう!」
1. Flaskとは?初心者にもわかる超基本
Flask(フラスク)は、PythonでWebアプリケーションを作るための軽量フレームワークです。フレームワークとは、何かを作るときに必要な部品をあらかじめ用意してくれている道具箱のようなものです。Flaskを使うと、難しい設定をしなくても、すぐにWebサイトのようなものを作り始めることができます。
2. GETリクエストとPOSTリクエストとは?
Webサイトを使っているとき、私たちは何気なくボタンを押したり、リンクをクリックしたりしていますよね。実はその裏側では、「GET(ゲット)」や「POST(ポスト)」といった通信が行われています。
- GETリクエスト:主に「ページを開く」ときに使われます。例:ニュース記事を読むとき。
- POSTリクエスト:主に「データを送信する」ときに使われます。例:お問い合わせフォームやログイン画面。
この2つの違いを理解することで、Webアプリを作るときにどちらを使えばいいかがわかるようになります。
3. FlaskでGETリクエストを処理する基本コード
では、まずはFlaskを使って、GETリクエストを処理してみましょう。以下のようなコードを書くだけで、簡単なWebページを表示することができます。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'こんにちは!これはGETリクエストで表示されています。'
if __name__ == '__main__':
app.run(debug=True)
app.route('/') は、「トップページにアクセスされたときに実行される関数を指定する」という意味です。この場合、「http://localhost:5000」にアクセスすると「こんにちは!」という文字が表示されます。
4. FlaskでPOSTリクエストを処理する方法
次は、フォームから送られてくるデータを処理するPOSTリクエストの方法を見てみましょう。
まずは、HTMLのフォームを表示するページを作り、そのフォームから名前を送信できるようにします。
from flask import Flask, request
app = Flask(__name__)
@app.route('/form', methods=['GET'])
def form():
return '''
<form action="/submit" method="post">
名前: <input type="text" name="name">
<input type="submit" value="送信">
</form>
'''
@app.route('/submit', methods=['POST'])
def submit():
name = request.form['name']
return f'{name}さん、こんにちは!'
if __name__ == '__main__':
app.run(debug=True)
このコードでは、/formにアクセスすると、名前を入力できるフォームが表示されます。そして、送信すると/submitにPOSTリクエストが送られ、入力された名前が表示されます。
5. GETとPOSTを同じページで処理するには?
1つのURLでGETとPOSTの両方を処理したいときもあります。たとえば、同じページにフォームを表示しつつ、送信されたデータも処理したい場合です。
from flask import Flask, request
app = Flask(__name__)
@app.route('/greet', methods=['GET', 'POST'])
def greet():
if request.method == 'POST':
name = request.form['name']
return f'{name}さん、こんにちは!'
return '''
<form method="post">
名前: <input type="text" name="name">
<input type="submit" value="送信">
</form>
'''
if __name__ == '__main__':
app.run(debug=True)
request.methodを使って、GETかPOSTかを判定しています。POSTなら名前を取り出して表示し、GETならフォームを表示します。
6. なぜGETとPOSTを使い分ける必要があるの?
GETとPOSTを正しく使い分けることで、次のようなメリットがあります。
- セキュリティ:パスワードなどの機密情報はGETではなくPOSTで送信した方が安全です。
- URLの見た目:GETはURLにデータが表示されるため、検索や共有に便利です。
- 意図の明確化:GETは「データを見る」、POSTは「データを送る」と分けることで、アプリの動きが分かりやすくなります。
7. Flaskアプリの実行方法と注意点
FlaskアプリはPythonファイルとして保存して、ターミナルで実行します。ファイル名がapp.pyの場合、以下のようにして起動します。
python app.py
実行すると、次のような表示が出ます。
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
このURLにブラウザでアクセスすると、自分が作ったWebアプリが表示されます。
Flaskはとても軽くてシンプルなので、初心者でもすぐにWeb開発を始められます。
まとめ
Flaskで学んだGETとPOSTの基本を丁寧に振り返る
Flaskを使ったWebアプリ開発では、「GETリクエスト」と「POSTリクエスト」を正しく使い分けることがとても大切でした。入力フォームを設置したり、画面を切り替えたり、ユーザーの行動に応じた処理を行うための基礎が、この二つの仕組みによって成り立っています。特に初心者のうちは、動作を試しながら「どのタイミングでGETが使われているのか」「どの場面でPOSTが使われるのか」をひとつずつ理解していくことで、だんだんとアプリの動きが見えてきます。
Flaskでは、app.route()を使ってURLごとに処理を分けたり、methods=['GET', 'POST']を指定してひとつのページで両方のリクエストを扱ったりすることができました。日常的に使うログイン画面やフォーム送信の仕組みも、これらの基本が土台になっています。使い分けが自然にできるようになると、自作のWebアプリもぐっと充実していきます。
また、GETは「ページを取得する」、POSTは「データを送信する」という役割をはっきり分けることで、ユーザーにも開発者自身にも優しい設計につながります。特に、セキュリティの観点で大切な値をPOSTで適切に扱うことで、安全で信頼できるアプリに近づいていけます。さらに、URLに情報が載る特性を活かして検索性を高めたり、共有しやすいページ構造を工夫したりといった応用も可能になります。
Flaskでよく使う基本のサンプルプログラム
ここでは復習として、GETとPOSTを同時に扱うシンプルなサンプルコードをもう一度まとめておきます。フォームの入力から結果の表示まで一連の流れがつかみやすく、自分で書き換えて試しやすい便利な例です。
from flask import Flask, request
app = Flask(__name__)
@app.route('/sample', methods=['GET', 'POST'])
def sample():
if request.method == 'POST':
user = request.form.get('user', '')
return f"{user}さん、送信ありがとうございます!"
return '''
<form method="post">
お名前: <input type="text" name="user">
<input type="submit" value="送信">
</form>
'''
if __name__ == '__main__':
app.run(debug=True)
実際に動かしながら確認すれば、GETでページが表示され、POSTでデータが送信される流れが自然と理解できるようになります。小さな一歩でも、確実に身につけていくことでWebアプリ開発の幅はどんどん広がっていきます。
生徒
「今日はGETとPOSTの使い方がよくわかりました。特に、同じページで両方を処理できるって便利ですね。」
先生
「そうですね。フォームを表示する時はGETで、送信するときはPOSTという流れが自然に理解できれば、より実践的なアプリを作れるようになりますよ。」
生徒
「なるほど…。POSTはデータを安全に扱うためにも重要なんですね。URLに情報が残らないっていう点も安心です。」
先生
「その通りです。今回の基本がしっかり理解できれば、ログイン、検索、登録フォームなど、さまざまなページの仕組みを組み立てられますよ。」
生徒
「ありがとうございます!次はもっと応用的なページ作りにも挑戦してみたいです!」