Bir REST web hizmetinde bir eylemi tetiklemek için hangi HTTP fiilini kullanmalıyım?
Bir REST servisinin detaylarını düşünürken, bu buluşsal düşünceyi göz önünde bulundurmak genellikle yararlı olacaktır: bunu bir web sitesi ile nasıl uygularsınız?
HTML, yalnızca GET ve POST isteklerini tanımlayabilir. Yani başlayabiliriz orada arama.
Mı GET
uygun? Bu soruyu cevaplamak için, müşterilerin ve ara bileşenlerin yapmasına izin verilen varsayımları düşünmemiz gerekir GET
. Anlamsallığı GET
olan güvenli
istemci, hedef bir kaynağa güvenli bir yöntem uygulanmasının bir sonucu olarak kaynak sunucuda herhangi bir durum değişikliği istemez ve beklemez. Benzer şekilde, güvenli bir yöntemin makul bir şekilde kullanılmasının kaynak sunucuda herhangi bir zarara, mülk kaybına veya olağandışı bir yüke neden olması beklenmez.
Bu nedenle, sonuç, müşterilerin ve ara bileşenlerin kendi endişelerini gidermek için gerektiği kadar GET talebini başlatma konusunda takdir yetkisi olmasıdır. Örümcekler dizinlerini güncellemek için kaynakları ayırt etmeksizin alabilir. Önbellekleri önceden getirebilir. Güvenilmez bir ağda, en az bir yanıtı sağlamak için kayıp mesajlar gerektiği kadar sık tekrar denenebilir.
Yapılandırmaları, önbelleği vb. Yeniden yüklemek için kullanılacaktır.
Bunlar yapılması pahalı şeyler ise, belki de müşterilerin bu istekleri kendi takdirine bağlı olarak yapmalarını istemezsiniz.
POST
Öte yandan, etkili bir şekilde sınırlandırılmamıştır - bu, genel müşterilerin yapmasına izin verilen varsayımları büyük ölçüde azaltır. Spekülatif POST istekleri yapan bileşenlere sahip değilsiniz, çünkü bunu yapmaktan mahrum kalacaklardı - standarttaki hiçbir şey tamam değil diyor.
PUT
, PATCH
, DELETE
... bunlardan daha fazla spesifik semantik ile güvensiz yöntemler POST
; uygun olup olmadıkları kaynak modelinize bağlı olacaktır.
Akılda tutulması gereken önemli bir fikir, HTTP yöntemlerinin belge etki alanına ait olmasıdır (Bkz. Jim Webber'in 2011 konuşması ), tanımladığınız etkilerin büyük olasılıkla belge etki alanının bir parçası olmadığı, ancak belgeler değiştirildiğinde yan etkilerin olduğu . Bu, çalışmalarınızı gerçekleştirmek için belgelerinizi nasıl düzenlediğiniz konusunda size çok fazla özgürlük verir.