ルートで許可するメソッドを宣言する
@app.routeにmethodsを渡してGETとPOSTを許可します
「ルートで許可するメソッドを宣言する」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。
ルートのデフォルトはGET
これまでに作成したFlaskのルートは、すべてGETリクエストにのみ応答します。ブラウザーはページの取得にGETを使うため、自然なデフォルトです。
methods引数
ほかのメソッドを受け付けるには、ルートデコレーターにmethodsリストを渡します。これにより、ビューが処理するHTTPメソッドをFlaskに正確に伝えられます。
@app.route("/submit", methods=["GET", "POST"])
def submit():
return "ok"GETを明示的に列挙する理由
methodsを設定すると、暗黙的なGETはなくなります。GETも受け付けたい場合は、自分でリストに含める必要があります。
POST専用ルート
ページを提供すべきでないエンドポイントもあります。POSTだけを指定してルートをPOST専用にすると、GETリクエストは拒否されます。
@app.route("/api/items", methods=["POST"])
def create_item():
return "created"メソッドは大文字の文字列
Flaskでは各メソッドを「GET」や「POST」のような大文字の文字列で指定します。小文字の指定は受信したリクエストと一致しません。
HEADも自動的に使える
GETを許可すると、FlaskはHEADにも自動的に応答します。HEADはGETと同じヘッダーを返しますが、本文は返しません。
OPTIONSも追加される
FlaskはOPTIONSも自動的に処理し、ルートが受け付けるメソッドを列挙したAllowヘッダーを返します。
GETとPOSTを超えて
APIでは、さらに多くのメソッドが必要になることがあります。同じ方法でPUT、PATCH、DELETEを列挙し、リソースの更新や削除に対応できます。
@app.route("/api/items/<id>", methods=["PUT", "DELETE"])
def edit_item(id):
return "changed"1つの関数で複数のメソッド
1つのビューで複数のメソッドを同時に受け付けられます。その中で各メソッドの動作を決めれば、すべてを1つの関数で処理できます。
意図に合ったメソッドを使う
読み取りにはGET、作成にはPOSTを使います。適切なメソッドを選ぶことで、どのクライアントにとっても予測しやすいAPIになります。
メソッドが違えば一致しない
クライアントが指定したメソッドをリストに含めていない場合、Flaskはリクエストを完全に拒否します。methodsの宣言は、最初のアクセス制御になります。
簡単な確認
methodsを設定したとき、GETがどうなるか考えてみましょう。
まとめ
ルートはデフォルトでGETになりますが、methodsリストを使うとPOSTやPUTなども受け付けられます。GETも必要な場合は、自分でリストに追加してください。よくできました!🎉
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「ルートで許可するメソッドを宣言する」レッスンは無料ですか?
はい。「ルートで許可するメソッドを宣言する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。
「ルートで許可するメソッドを宣言する」で何を学びますか?
@app.routeにmethodsを渡してGETとPOSTを許可します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Flask Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ルートで許可するメソッドを宣言する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFlask Academyレッスンでコードを書いて実行できますか?
はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ルートで許可するメソッドを宣言する
- request.methodで処理を分岐する
- 本文からPOSTデータを読み取る
- 405 Method Not Allowedを解説