3.2 H T T Pメソッド ( G E T, P O S T, P U T, D E L E T E)

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について解説します。