GET、POST、PUT、および DELETE を利用する RESTful Web アプリケーションを構築しようとしています。しかし、この特定のアプリでの DELETE の使用について質問がありました。
最初に少し背景を説明します。
私の webapp は、別のシステムでも管理されている (そして、たまたま常に作成されている) 一般的なエンティティを管理します。したがって、私の webapp 内では、各エンティティは一意のキーを使用してデータベースに格納されます。ただし、URL を介してそれらにアクセスする方法は、他のシステムの一意のキーを使用することです。
簡単な例でこれが明確になると思います。URL を取得します/entity/1
。これにより、自分のシステムではなく、他のシステムのID 1 を持つエンティティの情報が表示されます。実際、システム内の ID は完全に隠されます。1
私自身のシステムでは、 ID を持つエンティティにアクセスするための URL スキームはありません。
よし、これで私の webapp の構造がわかったので、それらのエンティティの削除に戻りましょう。
システムでエンティティを「削除」する方法がありますが、実際にはデータベースからエンティティを削除しないため、引用符で囲みます。むしろ、に移動したときに表示されないようにするプロパティでそれらにフラグを立てます/entity/1
。
このため、データの観点から、プロパティを設定するだけなので、使用する必要があるように感じますPUT
(この方法での「削除」は冪等になります)。
では、問題は、RESTful なアプローチにはデータに対する忠実性があるか (この場合、私がPUT
ing していることは明らかです)、それともアプリ内のデータの表現 (この場合、私がDELETE
ing しているように見えます) があるでしょうか?