GET, POST, PUT ve DELETE işlevlerini kullandığım bir RESTful webapp oluşturmaya çalışıyorum. Ancak bu uygulamada DELETE kullanımı hakkında bir sorum vardı.RESTful Soft Sil
ilk Biraz arka plan:
Benim Webapp başka bir sistemde (her zaman oluşturulan, olur, ve benzeri) de yönetilir jenerik varlıkları yönetir. Dolayısıyla, web sunucumda, her varlık veritabanında benzersiz bir anahtarla depolanacaktır. Ancak, URL'ler aracılığıyla onlara erişme şeklimiz, diğer sisteminin benzersiz anahtarıdır.
Basit bir örnek bunu açıklığa kavuşturacaktır, bence. /entity/1
URL'sini alın. Bu, diğer sistemde numaralı ID 1 numaralı varlık ile ilgili bilgileri görüntüleyecektir ve kendi sistemim değil. Aslında sistemimdeki kimlikler tamamen gizlenecek. Kendi sistemimde 1
kimliğine sahip varlıklara erişmek için hiçbir URL şeması olmayacaktır.
Pekala, şimdi web günlüğümün nasıl yapılandırıldığını biliyoruz, şimdi bu varlıkları silmeye dönelim.
Sistemimdeki varlıkların "silinmesi" için bir yol olacak, ancak ben bunları veritabanından silmeyeceği için tırnak içine aldım. Daha ziyade, onları /entity/1
'a gittiğinizde görünmesini engelleyen bir özellik ile onları işaretleyecektir.
Bu nedenle, PUT
kullanıyorum gibi hissediyorum ('bu şekilde silme' idempotent olacaktır), çünkü veri perspektifinden, sadece bir özellik belirliyorum.
Yani, soru: RESTful yaklaşımın verilere sadakati var (bu durumda PUT
ing olduğum açıkça anlaşılıyor) veya uygulamadaki verilerin gösterimi (ki bu durumda benim gibi görünüyor) DELETE
ing)?
Evet - Ne yapmak istediğinizi açıklayan fiili/yöntemi kullanmalısınız. DELETE daha iyi bir seçenek –
Ben de alestanis ile aynı fikirde. –
Cevabınız için teşekkür ederiz, alestanis! Senin mantığına katılıyorum; Kabul etmeden önce her iki yönde başka çekici cevapların olup olmadığını görmek için birkaç gün bekliyorum. – jmeas