HATEOAS (REST-mimarisi) için gerçek örnekler [kapalı]


140

herkesin fark etmiş olabileceği gibi, vahşi doğada çok sayıda sahte / ilkel REST-API vardır (bu, HTTP-API uygular ve uygulama altyapısı olarak hipermetin gereğini izlemeden REST olarak adlandırır. için Roy T. Fielding ünlü rant , birinci REST paradigma belirtilen adam).

Durum geçişleri için ilişkili uygulamaya özgü medya türü tanımlarıyla birlikte gerçekten hipermetin güdümlü bir REST-uygulamasının pratik örneklerini bulamadım.

Bu tür uygulamaların halka açık örnekleri var mı?


3
Birçok insanın REST'in "kolay" olduğunu iddia ettiğinden bunu ilginç buluyorum, ancak Fielding, basit bir mimari olmasına rağmen, onunla bir uygulama tasarlamanın basit olmadığını söylüyor.
aehlke

3
Bu arada, HATEOS değil HATEOAS olmalı, daha sonra google iyi değil.
David Roussel



Roy Fielding hiç HATEOAS kullanarak bir uygulama geliştirdi mi?
systemovich

Yanıtlar:


102

Bu kod çalıştırma anlamında bir uygulama değil, ama gerçekten InfoQ " bir fincan kahve GET nasıl " makalesini seviyorum . RESTful protokolü olarak Starbucks'ta bir kahve sipariş etme işlemini açıklar. Bu tipik "her şey bir kaynaktır" REST tanıtım makalesinin ötesine geçer ve HATEOAS'a odaklanır. Şiddetle tavsiye edilir.


5
Jim Webber, Sayas Parastatidis ve Ian Robinson'ın "Uygulamada Dinlenme" kitabı oldukça kullanışlıdır
DomreiRoam

2
Makale iyi, ancak maalesef açıkladığı API, HATEOAS ilkesine kesinlikle uymuyor çünkü özel medya türleri kullanmıyor. Her şey application / xml ise, istemci her kaynağın nasıl yönetileceğini (örn. Serileştirmeyi, ayrıştırmayı, görüntülemeyi) nasıl bilebilir? İnsanlar tarafından okunması gereken belgeler gibi bu bilgilerin aktarılmasında standart olmayan bazı yollara bağlı olacaktır.
ygormutti

21

Sun Cloud API'sı nasıl olur ? Girişten:

API, URI alanında belirli bir yapı gerektirmez. Başlangıç ​​noktası, bulut hizmet sağlayıcısı tarafından sağlanan ve bulutun kendisini tanımlayan bir URI'dır. Bulutun temsili, buluttaki diğer kaynaklar ve ayrıca bunlar üzerinde gerçekleştirilebilen işlemler için URI'ler içerir (örneğin, sanal makineleri dağıtma ve başlatma).

Backstory da yararlı olabilir.


2
Beni HATEAOS yolundan başlatan arka plan.
CyberFonic

3
tüm bağlantılar öldü
Roeland Van Heddegem

"Üzgünüz kenai.com sitesi kapatıldı."
Nick Rolando

@NickRolando, bağlantıyı değiştirdim.
Zengin Apodaca

@RichApodaca, backstory bağlantısı öldü.
Vasantha Ganesh K

7

Netflix, kaynakların bir parçası olarak bağlantılar içeren HATEOAS tabanlı bir REST API'sine sahiptir .


1
ve şimdi durum kodu
404'tür

1
@ Sargent bağlantısı kopacak, lütfen güncelleyin.
Govi S

Üzgünüz, Netflix onu indirdi ve başka bir şeyle gitti gibi görünüyor.
Sargent

2
Yalnızca bağlantı yanıtları, bu tür bağlantılar öldüğünde daha az alakalı olma eğilimindedir.
nyedidikeke

@nyedidikeke bir bağlantı ama bu bağlam için bir cevap, sadece yazı düzenleyerek bağlantı düzeltmek gerekir!
Al-Mothafar

3

Sun Cloud API'sinin RESTfulness'i aslında Roy'un 4. noktasında ele alınmıyor mu?

REST API'sı sabit kaynak adları veya hiyerarşileri tanımlamamalıdır (istemci ve sunucunun bariz bir şekilde birleştirilmesi). Sunucular kendi ad alanlarını denetleme özgürlüğüne sahip olmalıdır. Bunun yerine sunucuların, ortam türleri ve bağlantı ilişkileri içindeki bu yönergeleri tanımlayarak, istemcilere HTML formlarında ve URI şablonlarında yapılan gibi uygun URI'lerin nasıl oluşturulacağı konusunda talimat vermesine izin verin. [Buradaki başarısızlık, istemcilerin, RPC'nin işlevsel kuplajına veri odaklı eşdeğeri olan etki alanına özgü bir standart gibi bant dışı bilgiler nedeniyle bir kaynak yapısı üstlendiğini ima eder].

Örnek 1 Tanımlanmış bir heiraşideki sabit kaynak adları:

Sun Cloud API'sından: "... bir VDC'nin temsili, içinde yaşayan Kümelerin temsillerini içerecek ve bu da her kümedeki VM'lerin temsillerini içerecektir."

Alan adına özgü bir standart gibi örnek 2 bant dışı bilgiler:

Bulut kaynak alanı "uri" için "kaynak iletişim mekanizması" nın GET olduğunu bilmek için wiki sayfası içeriğine (bant dışı bilgi) sahip olmanız gerekir.


2
Haklısın, bu çok yanıltıcı. Ancak Roy, medya türünün içeriğinden değil, uri uzayındaki kaynak adlarından bahsediyor. Sun, herhangi bir zamanda bir kümeye erişmek için kullanılan uri'yi değiştirmekte özgürdür. Açıkçası, medya türünün yeni bir sürümünü oluşturmadan "küme" terimini temsil içindeki "grup" olarak değiştiremez, ancak URI'yi herhangi bir şey olarak değiştirebilir.
Darrel Miller

4
Sun API'nın HTTP'yi tek biçimli arayüzü olarak kullandığını biliyoruz, bu nedenle istemcinin GET'in bulut kaynağı için geçerli bir fiil olduğunu bilmek için wiki sayfasına bakmasına gerek yoktur. GET'in güvenli bir fiil olduğunu bildiğini düşünerek deneyebilir veya mevcut olup olmadığını belirlemek için OPTIONS kullanabilir.
Darrel Miller

3

Bunun bir süre önce sorulduğunu fark ettim, ancak basit bir örnek için "uygun" bir REST API akışını göstermeye başladım. Roy'un REST kurallarına uymaya çalıştım - belki de yardımcı olabilir: REST kullanarak API örneği

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.