Halen anladığım kadarıyla HATEOAS, temel olarak her şey, daha sonra yapılacaklar hakkında bilgi içeren her bir yanıt bağlantısını bir araya getirmekle ilgilidir. Basit bir örnek internette kolayca bulunabilir: bir hesap kaynağı ile birlikte bir bankacılık sistemi. Örnek, bir hesap kaynağına bir GET isteğinin ardından bu cevabı gösterir.
GET /account/12345 HTTP/1.1 HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">100.00</balance>
<link rel="deposit" href="/account/12345/deposit" />
<link rel="withdraw" href="/account/12345/withdraw" />
<link rel="transfer" href="/account/12345/transfer" />
<link rel="close" href="/account/12345/close" />
</account>
Verilerle birlikte, daha sonra neler yapılabileceğini söyleyen bağlantılar vardır. Bakiye negatif ise,
GET /account/12345 HTTP/1.1 HTTP/1.1 200 OK
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">-25.00</balance>
<link rel="deposit" href="/account/12345/deposit" />
</account>
Böylece sadece para yatırabiliriz. Her şey yolunda, Fiddler kullanıyorsanız veya tarayıcıdan istekte bulunursak neler yapılabileceğini kolayca görebiliriz. Bu tür bilgiler API'nin yeteneklerini keşfetmemiz için yararlıdır ve sunucu istemciden ayrılır.
Ne var ki, bir müşteri oluşturduğumuzda, Javascriptli bir SPA veya bir Android uygulaması veya başka birçok şey gibi, HATEOAS'ın ne kadar alakalı olduğunu göremiyorum. Demek istediğim şudur: SPA'yı javascript'te kodlarken, kodu yazmak için API'de neler yapılabileceğini bilmeliyim.
Bu yüzden kaynakları, desteklenen yöntemleri, ne almayı umduklarını ve sunucuya ajax çağrıları yazmak için ve hatta kullanıcı arayüzünü oluşturmak için ne geri verdiklerini bilmem gerekiyor. Kullanıcı Arayüzünü kurduğumda, hesap isteğinde bulunduktan sonra, örneğin bir hesaba para yatırabileceğimi veya kullanıcı arayüzünde bu seçeneği sağlayamayacağımı bilmeliyim. Ayrıca, ajax çağrısını oluşturmak için para yatırmak için URI’yi bilmem gerekecek.
Demek istediğim, API'ye talepte bulunduğumuzda, bağlantılar bizim API'yi daha iyi keşfetmemize ve kullanmamıza izin veriyor, ancak bir müşteri oluşturduğumuzda, oluşturduğumuz uygulama sadece linklere bakmayacak ve sonra kendi kendine oluşturulacak Doğru UI ve doğru ajax çağrıları yapmak.
Peki HATEOAS müşterileri için nasıl önemlidir? Neden zaten HATEOAS ile uğraşıyoruz?