こんにちはちゆりです。
pythonのFlaskを勉強し始めて数時間程でまずぶち当たる壁は
GETとPOSTどっち使ったらいいねん!!問題だと思います。僕は困ったらPOSTを使えばいい。とりあえずPOSTを使っておけばなんとかなると教わったので意識してGETを使ったことはありませんでした。
それじゃあいかんでしょ。ということでGETとPOSTの違いを備忘録的にまとめておく。
ざっくりGETとPOST
GET?は?POST?は?なんやねん。
GETとPOST
GETとPOSTは入力フォームのデータを送信するときに利用します。

入力フォームに入力した値をPythonに渡して(送信して)Python側で処理をするという流れです。
このとき入力フォームを実装しているHTML側でGETで送信するかPOSTで送信するかを記述するのですが,一応どちらでも送信できます。
では,どちらを使うのが良いのか。
GETはこんなとき/特徴
- データの取得をしたいときに使用(データベースの書き換えがないとき)
- 送信されるデータがURLに付加される
例えばこんなふうに長々と送信情報がURLにて付加されていることが分かる。
"127.0.0.1:5000/?yourname=tiyuri&age=25"
「?」パラメータのはじまり
「=」挟んだ左側がGETの変数名、右側が渡される値
「&」パラメータの切れ目
POSTはこんなとき/特徴
- データを変更したいときに使用(データベースの書き換えが必要なとき)
ここで言う変更はデータの新規登録,ソート,削除,更新
- 送信されるデータはメッセージボディ内に含まれるためURLに情報の不可はされない。(内部でデータを保持する。)
パスワードなどの秘匿性のあるものの送信を行う場合は,POSTを用いる。
また,送信できる情報が多い場合にも(GETは2048文字,POSTは無制限)
結果,POST使っておけば無難
GETやPOSTが用意されていますが,実は全てPOSTを使っておけば問題ないです。
強いて言うなら。GETを使うと
- 情報を保持した状態をブックマークに登録できる
URLにパラメーターを持つため,URLでどのような情報を持っているか判別できるからです。
- ログを残すことができる。
これももちろんURLに情報が保持れますからアクセスURLをログとして確認することができます。
また,デバッグ段階でパラメーターの情報を簡単にURLから見れますよね。
以上GET/POSTのざっくり特徴説明でした。
参考に過去の記事でSQLiteへの接続をFlaskで記述しています。

この記事ではしっかりPOST使っています。
データベースの扱いがメインなので。。。
ありがとう
HTMLにGETかPOSTか指定する場合は<form>タグに記述
<form action="#" method="get">~</form>
<form action="#" method="post">~</form>
ここらへんの説明はあまりできてないですね。
コメント