2013-04-05 15 views
20

私はGET、POST、PUT、DELETEを利用するRESTful Webアプリケーションを構築しようとしています。しかし、私はこの特定のアプリでのDELETEの使用に関する質問がありました。RESTfulソフト削除

第1の背景のビットは:

私のWebアプリケーションは、別のシステムでは(常に作成され、発生し、)も管理されている一般的なエンティティを管理します。だから私のwebapp内では、各エンティティは、ユニークなキーを使用してデータベースに格納されます。しかし、URLを介してアクセスする方法は、の別のシステムの固有のキーを使用します。

単純な例でこれを明確にすると思います。 URLは/entity/1です。これにより、ID番号がのエンティティの情報が他のシステムに表示され、自分のシステムでは表示されません。実際、私のシステムのIDは完全に隠されています。私自身のシステムでIDが1のエンティティにアクセスするためのURLスキームはありません。

これで、私のwebappがどのように構造化されているか分かりましたので、それらのエンティティを削除することに戻りましょう。

システム内のエンティティを削除する方法がありますが、実際にはデータベースから削除しないため、引用符を付けます。むしろ、/entity/1に行ったときに表示されないようにするプロパティでフラグを立てます。

PUT(この方法では「削除」は冪等である)を使用する必要があるように感じます。なぜなら、データの観点からは単にプロパティを設定するからです。

RESTfulアプローチはデータに忠実なものです(その場合は私がPUTになっていることが明らかです)。または、アプリケーション内のデータの表現(その場合は、 DELETE ing)?

答えて

31

DELETEを使用してください。

データの処理を「ソフト削除」といいます。フラグを設定し、フラグが立てられたアイテムが表示されないようにします。これはあなたのwebappの内部であり、ユーザーはあなたが削除するのではなく、やりたいことをソフト削除することを知る必要はありません。このため、DELETE動詞を使用する必要があります。

+1

はい - 実行したいことを説明する動詞/方法を使用する必要があります。 DELETEはより良い選択です –

+0

私はalestanisにも同意します。 –

+0

返信ありがとう、alestanis!私はあなたの推論に同意するようになった。私は受け入れる前に、いずれかの方向の他の魅力的な反応が現れるかどうかを確認するために数日待っています。 – jmeas

関連する問題