HTTP DELETEリクエストにパラメーターを提供することに関してRESTfulでないものはありますか?
私のシナリオでは、「本当に削除してもよろしいですか?」をモデル化しています。シナリオ。場合によっては、リソースの状態は、要求された削除が無効である可能性があることを示唆しています。おそらく、自分で削除の確認が必要ないくつかのシナリオを想像できます。
私たちが採用したソリューションは、削除リクエストにパラメーターを渡して、削除を続行してもよいことを示すことです( "?force_delete = true")
例えば
DELETE http://server/resource/id?force_delete=true
私はそれがまだ落ち着いていると信じています:
(a)DELETEのセマンティクスは変更されていません。ユーザーは通常のDELETEリクエストを送信できますが、409で失敗する可能性があり、応答の本文に理由が説明されています。(説明する価値がない理由で)場合によってはユーザーにプロンプトを表示する理由がないため、失敗する可能性があると言います。
(b)Royの論文には、RESTの精神に反することを示唆するものは何もありません。なぜHTTPはRESTの1つの実装にすぎないので、なぜHTTPパラメータを渡すことが重要なのでしょうか。
これがRESTfulでない理由を否定する決定的な声明を誰かが私に指摘できますか?
関連する質問で、ユーザーがforce_deleteを指定しなかった場合、返されます409 Conflict
-これが最も適切な応答コードですか?
ファローアップ
さらに調査した結果、DELETEにパラメーターを追加すると、いくつかの原則に違反する可能性があると思います。
1つ目は、実装が「Uniform Interface」に違反している可能性があることです(Royの論文のセクション5.1.5を参照)。
'force_delete'を追加することで、すでに適切に定義されたDELETEメソッドに制約を追加します。この制約は私たちだけに意味があります。
また、確認ダイアログは本当にUIの問題であり、すべてのクライアントが削除の確認を望んでいるわけではないため、「5.1.2クライアントサーバー」に違反していると主張することもできます。
誰か提案?