HTTPメソッドについて教えてください。
GET、POSTは機能的に使い分けする理由は理解できます。
しかし、PUT、DELETE、PATCHメソッドを使う理由が全く分かりません。
結局はバックエンドのアプリケーションにデータを送信し、
バックエンドがごにょごにょ処理をするんだったら POST だけではダメなんでしょうか?
正しいHTTPメソッドを使用することによって、ブラウザ側がセキュリティ的にいい感じに動いてくれるのでしょうか?
HTTPメソッドを正しく使う理由が説明された文章を見つけられず、PUTやDELETEなどが紹介されていて困惑しています。ガチの天才エンジニアの皆さんでもこの辺りは曖昧に使ってたりするんでしょうか?
6 件の回答
それっぽい解説文章を見つけました。
https://qiita.com/NagaokaKenichi/items/0f3a55e422d5cc9f1b9c
ですが、解説文章は複数あると理解の道筋が多く、大変理解がしやすいです。
皆さんの言葉で解説した回答もお待ちしております。
GET 以外は全部 POST で済むけど、CRUD のどれなのか、何かしら処理を判断するフラグが必要。対して PUT や DELETE を使えばそれらのフラグが必要ない。例えば Laravel なら、
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
で全部処理を分けられる。コードの視認性が良くなるんじゃないかな。
Re:3
まあ URL で /data/id/delete とかにすればそれでもいいんだろうけど。
Re:3
確かにHTTPメソッドで処理を分けることができれば、余計な処理を書き加える必要が無いですもんね!記述のしやすさやメンテナンス性を考えるとHTTPメソッドを適切に使った方が良さそうな気がしてきました!
NestJSをお勉強しているのですが、同じパスにGetや、Post、Put を書くサンプルコードがあり、どんな処理をしたいのかがHTTPメソッドを見るだけで一目瞭然なのは読みやすいなぁと思っていました。1つの処理に専念して書けるのは強力なメリットになりそうです!ありがとうございます!
権限をユーザー毎にわけたいときとか、管理者以外DELETE禁止みたいに出来ると便利だよ
文字通り