Bir HTTP DELETE isteğine parametre sağlamada RESTful olmayan herhangi bir şey var mı?
Benim senaryom "Bunu silmek istediğinizden emin misiniz?" senaryo. Bazı durumlarda, kaynağın durumu istenen silme işleminin geçersiz olabileceğini gösterir. Muhtemelen bir silme işleminin onaylanması gereken bazı senaryoları kendiniz hayal edebilirsiniz.
Benimsediğimiz çözüm, silme işlemine devam etmenin uygun olduğunu belirtmek için silme isteğine bir parametre iletmektir ("? Force_delete = true")
Örneğin
DELETE http://server/resource/id?force_delete=true
O zamandan beri hala dinlendirici olduğuna inanıyorum:
(a) DELETE'in anlamı değiştirilmiyor - kullanıcı yine de normal bir DELETE isteği gönderebilir, ancak bu 409 ile başarısız olabilir ve yanıtın gövdesi nedenini açıklayacaktır. Başarısız olabilir diyorum çünkü (açıklamaya değmeyen nedenlerden dolayı) bazı durumlarda kullanıcıyı uyarmak için bir neden yoktur.
(b) Roy'un tezinde bunun REST ruhuna aykırı olduğunu önerecek hiçbir şey yok - HTTP REST'in yalnızca bir uygulaması olduğu için neden HTTP parametrelerini iletmek önemli olsun?
Birisi bana bunun neden RESTful olmadığına dair kesin bir ifadeye işaret edebilir mi?
İlgili bir soruda, kullanıcı force_delete belirtmezse 409 Conflict
, o zaman geri dönüyorum - bu en uygun yanıt kodu mu?
Takip et
Biraz daha araştırdıktan sonra, DELETE'e parametre eklemenin birkaç ilkeyi ihlal edebileceğini düşünüyorum.
Birincisi, uygulamanın muhtemelen "Tekdüzen Arayüzü" ihlal ettiğidir ( Roy'un tezinin 5.1.5 bölümüne bakın).
'Force_delete' ekleyerek, zaten iyi tanımlanmış DELETE yöntemine ek bir kısıtlama ekliyoruz. Bu kısıtlama sadece bizim için anlamlıdır.
Onay diyaloğu gerçekten bir kullanıcı arabirimi sorunu olduğundan ve yine tüm istemciler silme işlemini onaylamak istemeyeceğinden, bunun "5.1.2 İstemci-Sunucu" yu ihlal ettiğini de iddia edebilirsiniz.
Önerileriniz var mı?