Bu, kafamı saran en zor zamana sahip olduğum REST asaleti olarak görünüyor. Uygulama için hipermetin tasarlanması/tanımlanması: Bu prensiplerin gerçek dünya uygulamalarına yönelik işaretçiler: Atom protokolü bu prensibi nasıl uygular? Bazıları bunu basit bir şekilde bir varsayımsal alışveriş sepeti dinlenme api'sine nasıl uygulayacağını açıklayabilir.Birisi basitçe "Hypertext uygulama durumu altyapısı olarak" açıklayabilir
cevap
Düzenli bir web sitesinde gezinmeyi düşünün. Ziyaret ettiğinizde, sayfaların içeriğini okuyorsunuz ve ne okuduğunuza ve ne yapmak istediğinize bağlı olarak, sayfadaki çeşitli bağlantıları takip ediyorsunuz. Bu gerçekten, "uygulama devleti motoru olarak hipermetin" in aşağı doğru kaydığının özüdür. Bu örnekte, uygulama durumu kafanızdaki durum ve bulunduğunuz sayfadır. Buna dayanarak, kafanızdaki uygulama durumunu değiştiren başka bağlantıları da geçersiniz.
Bunun için başka bir öğe var, akıl: Diğer tarafı, bu URI'leri tahmin etmenize gerek olmamasıdır: URI'ları bulmak için sayfada yeterli içerik olması gerekir (örneğin, uygulama bilgileri içerik türüne sahip ve URI şablonu gibi şeyler) veya izlenecek URI'ler mevcut olmalıdır. Bunun ötesinde, bir RESTful HTTP uygulaması URI'lerin yapısını önemsememelidir.
GÜNCELLEME: Öğeleri genişletmek için HTML formları HATEOAS'ı da gösterir. GET kullanan formlar, URI şablonlarının kullanımına benzer. HATEOS, HTTP GET kullanılarak yalnızca çapraz bağlantı yapmakla sınırlı değildir: POST (veya başka bir yöntem, tarayıcı bunu destekliyorsa) kullanarak, sunucuya gönderilecek bir gösterimi açıklamakla olabilir.
Bu makale Flickr bağlamında bazı örnekler sağlanmaktadır.
Flickr RESTful değil. Yalan söylüyorlar. REST'in yaratıcısı olan Fielding, Flickr'ın ne yaptıklarını bilmiyor. – aehlke
Bu konsepte bakmanın diğer bir yolu, durumun geçerli sayfa ve içine gömülmüş bağlarla temsil edilmesidir. Bir bağlantıyı geçme, bir sonraki sayfa tarafından temsil edilen uygulamanın durumunu değiştirir. Açıklamak biraz zor ... ... zamanın herhangi bir noktasında mevcut olan bağlantılar, daha önce gerçekleşmiş olan eylemlere dayanarak hangi eylemlerin mevcut olduğunu tanımlar. Bu "mevcut durum" un bir tanımıdır. Hile, mevcut eylemleri temsil etmek olan bir eylem üzerinde "harekete geçen" URI'leri temsil etmektir. Bir URI ile ilişkili gösterimi almak, eylemi dolaylı olarak gerçekleştirir ve sonuçta temsil edilen ifadeyi alır. URI'ler gösterime gömülür ve kullanıcı belirli bir URI ile ilişkili eylemi anlar. Çeşitli HTTP yöntemleri, gerçekleşen "eylemleri" tanımlamaya yardımcı olur ve hiçbir eyleme izin verilmediğinde belirtir. Bu genellikle insanların tüm RESTful paradigmasını açıklarken neler oluyor.
Bunun çok doğru olduğunu düşünmüyorum. Ör. HTTP, yapabileceğiniz tek "eylemler" GET, POST, PUT ve DELETE. REST'te, URI'ler olarak kullanılabilir eylemleri temsil etmiyorsunuz, URI'lar aracılığıyla kaynakları açığa çıkarıyorsunuz ve insanların GET, POST, PUT ve DELETE (SİL) almasına izin veriyorsunuz. –
HTTP fiillerinin doğru kullanılması REST değil. Sadece HTTP'yi doğru kullanıyor. – aehlke
Hipermedyayı açıklama girişiminde bulunduğumda, bir haritaya karşı yön tabelası yoluyla bir arabada gezinme örneğini kullanmayı seviyorum. Doğrudan size soruya cevap vermediğinin farkındayım ama yardımcı olabilir.
Bir aracı sürerken ve belirli bir kavşağa ulaştığınızda, o noktadan nereye gidebileceğinizi gösteren tabelalar verilir. Benzer şekilde, hiper ortam size mevcut durumunuza göre bir dizi seçenek sunar.
Geleneksel RPC tabanlı bir API daha çok harita gibidir. Bir harita ile, rotanızı statik bir yol verisi kümesine göre planlamanız eğilimi gösterir. Haritalarla ilgili bir sorun, güncelliğini yitirebilecekleri ve trafik veya diğer dinamik faktörler hakkında bilgi sağlamadıklarıdır.
İşaret levhalarının avantajı, inşaat nedeniyle trafik akışını kontrol etmek veya trafik akışını kontrol etmek için sineklerin değiştirilebilir olmalarıdır.
Tabelaların her zaman haritadan daha iyi bir seçenek olduğunu öne sürmüyorum. Açıkçası, artıları ve eksileri var ama her iki seçeneğin de farkında olmak değerlidir. Hipermedia ile aynıdır. Geleneksel RPC arayüzüne değerli bir alternatiftir.
Harika bir örnek. Tabelasını benzer html linkler sanırım..right? – Surya
Tam olarak. Sanırım bunu açıklamalıydım. –
Bir küçük açıklama: "mevcut durumunuza dayalı bir dizi seçenek" muhtemelen, istemcinin duruma sahip olmaması gerektiği için "kaynak duruma dayalı bir dizi seçenek" olmalıdır. Sizin benzerliğiniz ile mevcut konumunuz kaynaktır. –
- 1. Birisi descendantFocusability = afterDescendants'ı açıklayabilir mi?
- 2. Birisi Meteor.defer() işlevinin nasıl çalıştığını açıklayabilir mi?
- 3. Birisi sahnelerin ardında neler olduğunu açıklayabilir mi?
- 4. Birisi bir sessionStorage nesnesinin ömrünü açıklayabilir mi?
- 5. Birisi istisnalara ilişkin referans referanslarını açıklayabilir mi?
- 6. Birisi HTML5 aria- * özniteliğini açıklayabilir mi?
- 7. Birisi bunun nasıl çalıştığını açıklayabilir mi lütfen?
- 8. Birisi bu make dosyasını açıklayabilir mi?
- 9. Birisi bu C kodunu açıklayabilir mi?
- 10. google uygulama altyapısı altyapısı ile cassandra/couchdb/mongodb kullanabilir miyiz?
- 11. EaselJS: Birisi demolarda kullanılan kalıtım paternini açıklayabilir mi?
- 12. Birisi kısaca Tek işareti açıklayabilir mi? openid'i SSO
- 13. Bu, WordPress'teki .htaccess kodudur. Birisi nasıl çalıştığını açıklayabilir mi?
- 14. Birisi Ajax ile dinlenme arasındaki farkı açıklayabilir mi?
- 15. Birisi iOS'u "x-apple-msg-load: //" açıklayabilir mi?
- 16. Birisi GetCardinality yönteminin ne yaptığını bana açıklayabilir mi?
- 17. Monostate ile Python Deprecation Uyarıları __new__ - Birisi nedenini açıklayabilir mi?
- 18. Birisi bana açıklayabilir mi, bu C++ kodu parçası?
- 19. Birisi bana bu php kodunun ne yaptığını açıklayabilir mi?
- 20. Birisi neden jQuery UI Datepicker'da olduğunu açıklayabilir mi?
- 21. Birisi bu Integer modüler davranışını Haskell'de bana açıklayabilir mi?
- 22. Birisi jQuery.when() ve deferred.then() yönteminin nasıl çalıştığını açıklayabilir mi?
- 23. Birisi geçen yıl reddit istismarını bana açıklayabilir mi?
- 24. Sıralama Uygulama, aynı test durumu
- 25. Oluşturucu Altyapısı
- 26. std :: put_time GCC'de uygulama durumu?
- 27. Fotoğraf çekimi "basitçe" çalışmıyor
- 28. Birisi android
- 29. Birisi
- 30. Birim Testi XG Cross Grup Transferi Uygulama Altyapısı Java JDO
Tamam, ne söylediğine bağlı olarak, URL şablonu şemaları kötülüktür ve uygulama, etiketleri gibi şemalar aracılığıyla sonraki seçenekleri sağlamalıdır. Alışveriş sepeti medyası (xml), kredi kartınızla nasıl ödeme yapacağınızı nasıl söyler? Bu etki için herhangi bir örnek var mı? Yanıt için teşekkürler. Uygulamanın ön bilgiye sahip olması gerekiyorsa, yani istemci uygulamasında kodlanmışsa, – Surya
URI şablon şemaları kötülerdir. OpenSearch, URI şablonlarının düzgün bir şekilde nasıl kullanıldığına iyi bir örnektir. Ancak eğer müşteri URI'larda sabitlenmişse, belli bir şekilde, REST olmayacaktır. –
Hayır, istemci sunucudan aldığı URI şablonlarını kullanıyorsa, bu farklı bir hikaye, dolayısıyla OpenSearch örneğim. Sunucu, istemciye, URI'leri orada nasıl oluşturduğunu ve daha sonra grup dışı bilgiden bağımsız olarak istemciden nasıl yapacağını anlatıyor. –