メインコンテンツへ
ネットワークネットワーク実践

HTTPメソッドの使い分けとして最も適切なものはどれか。

ア.GETはリソース取得(副作用なし)、POSTはリソース作成、PUTはリソース全体更新または作成、DELETEはリソース削除に使用する正解
イ.GETは全メソッドの代わりに使用可能な汎用メソッドである
ウ.POSTは冪等性(同じ操作を繰り返しても同じ結果)が保証されている
エ.DELETEメソッドはHTTP/1.0から存在し、すべてのWebサーバで必ず実装が必要である

解説

HTTPメソッドはレストランの「注文方法」みたいなもの。GETは「メニューを見せて(読み取りのみ)」、POSTは「新しい料理を作って」、PUTは「この料理を丸ごと別の料理に変えて」、DELETEは「この料理をキャンセルして」。それぞれ目的が違い、混用するとシステムが混乱する!

なぜ ア が正解か

HTTPメソッドの標準的な使い分け:①GET:リソース取得。安全(副作用なし)かつ冪等。ボディ不可(仕様上)②POST:リソース作成・データ送信。冪等性なし(複数回送ると複数作成される)③PUT:リソース全体の置換(冪等)。指定URIにリソースを作成または完全上書き④DELETE:リソース削除(冪等)。RESTful APIの基本設計原則。

なぜ イ は間違いか

GETで更新・削除操作を実装するのはRESTの設計違反(Googleアクセラレータ問題:GETリンクを先読みして意図せず操作が実行された実例あり)。GETは安全性(副作用なし)が保証されなければならない。

なぜ ウ は間違いか

POSTは冪等性がない。同じPOSTリクエストを2回送ると、同じリソースが2つ作成される可能性がある。冪等性があるのはGET・PUT・DELETE。

なぜ エ は間違いか

DELETEはHTTP/1.1で標準化されたメソッド。すべてのWebサーバで必須実装というわけではなく(静的サーバはDELETE不要)、サーバの目的と設計による。

出典: AI生成問題(学習用)