3.2 HTTPメソッド (GET, POST, PUT, DELETE) #
この記事では、HTTPメソッド(GET, POST, PUT, DELETE)について説明し、Flaskでこれらのメソッドをどのように扱うかを解説します。
HTTPメソッドは、クライアント(通常はWebブラウザ)からサーバーに送信されるリクエストの種類を示します。主要なHTTPメソッドは以下の通りです。
- GET: リソースの取得
- POST: リソースの作成
- PUT: リソースの更新
- DELETE: リソースの削除
1. GETメソッド #
GETメソッドは、指定されたリソースを取得するために使用されます。Flaskでは、デフォルトでルーティングはGETメソッドに対応します。例えば、以下のようなルーティングはGETメソッドに対応しています。
@app.route('/')
def index():
return 'Hello, World!'
2. POSTメソッド #
POSTメソッドは、新しいリソースを作成するために使用されます。通常、フォームのデータを送信する際に使用されます。FlaskでPOSTメソッドを扱うには、ルーティングでmethodsパラメータに’POST’を指定します。
from flask import request
@app.route('/post', methods=['POST'])
def post():
data = request.form
# データを処理
return 'データを受信しました'
3. PUTメソッド #
PUTメソッドは、既存のリソースを更新するために使用されます。PUTメソッドをFlaskで扱うには、同様にmethodsパラメータで’PUT’を指定します。
from flask import request
@app.route('/update', methods=['PUT'])
def update():
data = request.form
# データを処理
return 'データを更新しました'
4. DELETEメソッド #
DELETEメソッドは、指定されたリソースを削除するために使用されます。FlaskでDELETEメソッドを扱うには、methodsパラメータで’DELETE’を指定します。
@app.route('/delete', methods=['DELETE'])
def delete():
# データを削除
return 'データを削除しました'
5. 複数のHTTPメソッドを扱う #
1つのルーティングで複数のHTTPメソッドを扱う場合は、methodsパラメータに複数のメソッドをリストで指定します。以下の例では、GETメソッドとPOSTメソッドの両方を扱っています。
from flask import request
@app.route('/example', methods=['GET', 'POST'])
def example():
if request.method == 'GET':
# GETメソッドの処理
return 'GETリクエストを受信しました'
elif request.method == 'POST':
data = request.form
# POSTメソッドの処理
return 'POSTリクエストを受信しました'
上記の例では、request.methodを使って現在のリクエストのHTTPメソッドを判断し、適切な処理を行っています。
6. HTTPメソッドとセキュリティ #
HTTPメソッドを正しく使用することは、アプリケーションのセキュリティにも関係しています。例えば、以下の点に注意してください。
- GETメソッドはデータを取得するだけで、サーバー上のリソースを変更しないようにしてください。GETメソッドでデータを変更すると、ウェブクローラーなどがリクエストを送信し、意図しないデータ変更が発生する可能性があります。
- POSTメソッドは、フォームの送信やデータの作成に使用してください。ただし、クロスサイトリクエストフォージェリ(CSRF)攻撃に対する対策も適切に実装してください。
以上が、FlaskでのHTTPメソッド(GET, POST, PUT, DELETE)の扱いについての説明です。これらのメソッドを理解し、適切に使用することで、アプリケーションの機能を正しく実装できます。次の記事「3.3 テンプレートエンジン (Jinja2) の基本」では、Flaskで使用されるテンプレートエンジンであるJinja2について解説します。