2021年6月7日月曜日

プログラマですが、GETとPOSTの違いが未だ理解できていません。ググっても何が何だかさっぱり。基礎が出来ていない等は抜きにして、異業種や小中学生・はたまた猿でも分かるようにどなたか解説頂けませんか?

https://jp.quora.com/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%A7%E3%81%99%E3%81%8C-GET%E3%81%A8POST%E3%81%AE%E9%81%95%E3%81%84%E3%81%8C%E6%9C%AA%E3%81%A0%E7%90%86%E8%A7%A3%E3%81%A7%E3%81%8D%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B

シェアしました。

どっちもHTTPリクエストのメソッド(種類とでも言いましょうか)で、

仕組み上は名前以外に大した違いはありませんが、ルールが異なります。

故に用途も異なります。

【GET】

「GET」は情報(リソース)に変化があってはいけません。

そして、1回目、2回目、3回目のアクセスでも情報(リソース)に変化が無い限り全く同じ情報が返される必要があります。裏を返すとクライアント(利用者側)はリクエストに失敗したら、気軽にリトライして良い訳です。

Quoraで例えると「回答の投稿ボタン」を押すとデータベースに回答が登録される訳ですが、これは情報に変化があるためGETではいけません。

逆に質問を見る分には何回ページをリロードしようと情報に変化はありませんので、GETで良い訳です。

用途としては、「表示」「検索」です。

ちなみに、ブラウザのアドレスバーに直接入力をしてエンターキーを押した時のリクエストはGETです。

【POST】

「POST」は何をしてもOKです。

POSTリクエストで情報を表示、登録、変更、削除、何をしても許されます。

しかし、クライアント(利用者側)から見るとPOSTメソッドは危険なため気軽にリクエストする事はできません。2回リクエストすれば情報(リソース)が2個作られてもそれはクライアントの責任です。

従って、1回目のリクエストが失敗しても、クライアントは気軽にリトライする事はできません。

用途としては「登録」「編集」「削除」です。


※あえて書きませんでしたが、それ以外にも「PUT」、「DELETE」、「PATCH」等様々なメソッドがあり、それぞれ保証されている事や用途が異なります。

※GETは習慣的にクエリパラメータを使いますが、RFC上、Bodyをセットしてはいけない訳ではありませんので「名前以外に大した違いはありません」という表現を用いました。

石塚 正浩さんのプロフィール写真
コメントを追加…

0 コメント:

コメントを投稿