[解決済み] PUTとDELETE HTTPリクエストメソッドの有用性について教えてください。
質問
PUT や DELETE HTTP リクエストメソッドを使用したことがありません。私の傾向としては、システム (私のアプリケーションまたは Web サイト) の状態が影響を受けない場合 (製品リストのような場合) には GET を使用し、影響を受ける場合 (注文を行うような場合) には POST を使用することです。これらの2つは常に十分ではありませんか、それとも私は何かを見逃していますか?
どのように解決するのですか?
DELETEはリクエストされたリソースを削除するためのものです。
DELETE メソッドは、オリジンサーバーが Request-URI で識別されるリソースを削除するよう要求します。このメソッドは、オリジンサーバーの人為的な介入(または他の手段)によって上書きされてもかまいません(MAY)。オリジンサーバーから返されたステータスコードがアクションが正常に完了したことを示す場合でも、クライアントはオペレーションが実行されたことを保証することはできません ...
PUT は、サーバーにリソースを置いたり更新したりするためのものです。
PUTメソッドは、指定されたRequest-URIの下に同封のエンティティが格納されることを要求します。Request-URIが既に存在するリソースを参照する場合、同封のエンティティはオリジンサーバーに存在するものの修正版とみなされるべきです (SHOULD)。Request-URIが既存のリソースを指しておらず、そのURIが要求しているユーザーエージェントによって新しいリソースとして定義可能な場合、オリジンサーバーはそのURIでリソースを作成することができます ...。
完全な仕様については、こちらをご覧ください。
現在のブラウザは、残念ながら HTML フォームにおいて POST と GET 以外の動詞をサポートしていないので をサポートしていないため、通常、HTTP をフルに活用することはできません (JavaScript を使って送信をハイジャックすることは可能です)。HTML フォームでこれらのメソッドがサポートされていないため、動詞を含む URI は、たとえば
POST http://example.com/order/1/delete
あるいはさらに悪いことに
POST http://example.com/deleteOrder/id/1
は、CRUDセマンティクスをHTTP上で効果的にトンネリングしています。しかし、動詞は決してURIの一部であることを意図していません。その代わり、HTTPはすでにHTTPメソッドを通してリソース(例えば注文)をCRUDするためのメカニズムとセマンティクスを提供しています。HTTP はプロトコルであり、単なるデータトンネリングサービスではありません。
ですから、ウェブサーバー上でリソースを削除するには、次のように呼び出します。
DELETE http://example.com/order/1
を呼び出し、それを更新するために
PUT http://example.com/order/1
で、更新されたResource RepresentationをPUTボディで提供し、ウェブサーバがそれを適用するようにします。
ですから、もしあなたが、ある種の REST API に対して何らかのクライアントを構築する場合、おそらく PUT と DELETE のリクエストを送信するようにします。これは、JavaScript を介してリクエストを送信するなど、ブラウザ内に構築されたクライアントである可能性もありますし、サーバー上で動作するツールなどである可能性もあります。
より詳細な情報は、こちらをご覧ください。
- http://martinfowler.com/articles/richardsonMaturityModel.html
- PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?
- なぜ HTML フォームには PUT と DELETE メソッドがないのですか?
- PUT と DELETE はフォームで使うべきですか?
- http://amundsen.com/examples/put-delete-forms/
- http://www.quora.com/HTTP/Why-are-PUT-and-DELETE-no-longer-supported-in-HTML5-forms
関連
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] node.jsでHTTP POSTリクエストはどのように行われるのですか?
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プロキシが全く応答を受け取らない場合、502 HTTPステータスコードを使用すべきですか?
-
[解決済み] PUT、DELETE、HEADなどのメソッドは、ほとんどのウェブブラウザで利用可能ですか?
-
[解決済み] Firefoxで突然「Blocked loading mixed active content」問題が発生したのはなぜですか?
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】無効なデータに対するRESTレスポンスコード
-
[解決済み】http:// のリンクを全て // に変更することは可能ですか?
-
[解決済み】HTTPの "Content-Type "ヘッダーのすべての可能な値は何ですか?
-
[解決済み] REST DELETEは本当にべき乗なのか?
-
[解決済み] HTTPヘッダーの設定