SORU
29 Mart 2010, PAZARTESİ


DİNLENME, HTTP SİLMEK ve parametreleri

SİL HTTP isteği parametreleri sağlayarak ilgili bir şey olmayan Dinlendirici var mı?


Benim senaryo modelleme yapıyorum bunu silmek istediğinizden emin misiniz"?" senaryosu. Bazı durumlarda, kaynak durumu istenen silmek geçersiz olabilir. Muhtemelen bir silme onayı gerekli olduğu bazı senaryoları hayal bile edemediğin

Benimsedik çözüm Tamam sil ile devam etmek olduğunu belirtmek için silme isteği için bir parametre ("?=force_delete gerçek")

örneğin

DELETE http://server/resource/id?force_delete=true

Hala beri huzurlu olduğuna inanıyorum:

(a) SİLMEK anlamı değiştirilmiş değil - kullanıcı hala ama bu normal bir SİLME isteği gönderbaşarısız olabilirile 409 ve yanıt gövdesi nedenini açıklamıyor. (Sebep yok) açıklama değer için bazı durumlarda kullanıcıdan sebep yok çünkü başarısız olabilir diyorum.

(b) içinden bir şey Roy'un tez öneririm bu karşı ruhun DİNLENME - niye olsun HTTP beri tek bir uygulama SONUNA kadar neden geçen HTTP parametreleri önemli


Birisi bu Huzurlu olmama nedenini çivi dair kesin bir açıklama beni işaret edebilir?

Eğer kullanıcı force_delete belirtin değilse ilgili bir soru üzerine, 409 Conflict - en uygun yanıt kodu olduğunu dönüyorum?


Takip

Biraz daha araştırma yaptıktan sonra, SİLMEK için parametreleri ekleyerek birkaç ilkelerine aykırı olabilir diye düşünüyorum.

İlk uygulama muhtemelen ihlal eden "" (Roy's dissertation Bölüm 5.1.5 bakın . Üniforma Arayüzü

Ekleme 'force_delete' zaten iyi tanımlanmış SİLME yöntemi üzerine ek bir sınırlama ekliyoruz. Bu sınırlama bizim için anlamlı.

Ayrıca "İstemci-Sunucu onay diyalog gerçekten UI bir endişe ve yine tüm müşterileri olduğu için" silme işlemini onaylayın. 5.1.2 ihlal söyleyebiliriz

Öneri isteyen?

CEVAP
29 Mart 2010, PAZARTESİ


Hayır, huzur verici bir olay değil. Tek sebebi olmalısın koyarak bir fiil (force_delete) URI ise ihtiyacın için aşırı yük GET/POST metodları ortamı PUT/DELETE yöntemleri kullanılamaz. DELETE yöntemini kullanın bakılırsa, bu durum böyle değil.

HTTP hata kodu 409/Conflict olması için durumlar vardır nerede bir çatışma hangi engeller Dinlendirici servis operasyonu gerçekleştirmek için, ama orada hala bir şans bu kullanıcı olabilir çözmek için çatışma kendini. Önceden silme onayı silme önleyecek gerçek bir çelişki yok (burada) hiçbir şey istenen işlemi gerçekleştirmek API engeller olarak bir çatışma başına değil.

Alex dedi (bilmiyorum kim downvoted onu, o doğru), bu olmalı ele UI, çünkü Dinlendirici bir hizmet olarak bu sadece işlemleri istekleri ve olmalıdır bu nedenle, vatansızlar (yani olmamalı güveniyor onayları tutarak herhangi bir sunucu tarafı hakkında bilgi talebi).

UI bunu nasıl iki örnek olacaktır:

  • pre-HTML5:* kullanıcı için JS onay iletişim kutusunu göster, ve eğer kullanıcı onaylarsa tek isteği gönder
  • HTML5formu içeren sadece "" ve "" düğmeleri ("Onaylamak" olacağını gönder düğmesi) . İptal Teyit eder :* eylem ile bir form kullanın SİL

(*) Lütfen HTML 5 sürümleri için önce HTTP PUT ve DELETE metotları özgün olarak desteklemez unutmayın, ancak en modern tarayıcılar AJAX çağrıları ile bu iki yöntem. Çapraz tarayıcı desteği hakkında daha fazla bilgi için this thread bkz.


Güncelleme(ek araştırma ve tartışmalara dayalı):< / ^ br .

Hizmeti force_delete=true bayrağı hediye olmasını gerektirecek senaryosu Roy Fielding tezinde tanımlanan uniform interface ihlal ediyor. Ayrıca, HTTP RFC başı olarak SİLME yöntemi kaynak sunucu (istemci) geçersiz kılınmış, bu hedef sunucu (hizmet) yapmış olduğunu ima olabilir.

Hizmet SİLME istek aldıktan sonra herhangi bir ek onay ne olursa olsun, eğer bu hizmet aslında işlem gerçekleştirir () ihtiyaç duymadan bu işlemi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • cdgotx

    cdgotx

    8 Kasım 2011
  • Gigawipf

    Gigawipf

    18 ŞUBAT 2010