REST topluluğundaki hiç kimse REST'in kolay olduğunu söylemiyor. HATEOAS, REST mimarisine zorluk katan özelliklerden sadece biridir.
İnsanlar önerdiğiniz tüm nedenlerden dolayı HATEOAS yapmaz: bu zor. Hem sunucu tarafına hem de istemciye karmaşıklık katar (eğer gerçekten bundan yararlanmak istiyorsanız).
ANCAK bugün milyarlarca insan REST'in faydalarını yaşıyor. Amazon'da "ödeme" URL'sinin ne olduğunu biliyor musunuz? Yapmıyorum. Yine de her gün kontrol edebilirim. Bu URL değişti mi? Bilmiyorum, umrumda değil.
Önemsediğini biliyor musun? Ekran yazan herkes Amazon otomatik istemcisini kazıdı. Muhtemelen zahmetli bir şekilde web trafiğini koklayan, HTML sayfalarını okuyan, hangi bağlantıların ne zaman ve hangi yüklerle arayacağını bulmak için.
Amazon dahili süreçlerini ve URL yapısını değiştirir değiştirmez, bu sabit kodlu istemciler başarısız oldu - çünkü bağlantılar koptu.
Yine de, sıradan web sörfçüleri gün boyu neredeyse hiç aksamadan alışveriş yapabildiler.
Bu, iş başında REST, sadece metin tabanlı arayüzü yorumlayabilen ve sezebilen, küçük bir grafiği bir alışveriş sepeti ile tanıyan ve bunun gerçekte ne anlama geldiğini anlayabilen insan tarafından artırıldı.
Yazılım yazan çoğu insan bunu yapmaz. Otomatik istemciler yazan çoğu kişi umursamıyor. Çoğu insan, müşterilerini bozduklarında düzeltmeyi, uygulamayı ilk etapta kırılmayacak şekilde yapılandırmaktan daha kolay bulur. Çoğu insanın önemli olduğu yerde yeterli müşterisi yoktur.
Değişiklikleri hızlı, güvenilir bir şekilde ve bir değişiklik programı ile iletebilen, trafiğin her iki tarafında uzman teknik destek ve BT'ye sahip iki sistem arasında iletişim kurmak için dahili bir API yazıyorsanız, REST size hiçbir şey satın almaz. İhtiyacınız yok, uygulamanız yeterince büyük değil ve önemli olacak kadar uzun ömürlü değil.
Büyük kullanıcı tabanlarına sahip büyük sitelerde bu sorun var. Sistemleriyle etkileşime girerken insanlardan müşteri kodlarını bir hevesle değiştirmelerini isteyemezler. Sunucu geliştirme çizelgesi, istemci geliştirme çizelgesiyle aynı değildir. Her iki taraftaki trafiği ve işlemleri kesintiye uğrattığı için API'de ani değişiklikler, dahil olan herkes için kesinlikle kabul edilemez.
Bu nedenle, böyle bir işlem büyük olasılıkla HATEOAS'tan faydalanacaktır, çünkü sürümlemesi daha kolaydır, eski istemcilerin geçişi daha kolaydır, geriye dönük uyumluluğa sahip olmamasından daha kolaydır.
İş akışının çoğunu sunucuya devreten ve sonuçlara göre hareket eden bir istemci, sunucu değişikliklerine karşı bunu yapmayan bir istemciye göre çok daha güçlüdür.
Ancak çoğu insan bu esnekliğe ihtiyaç duymaz. 2 veya 3 departman için sunucu kodu yazıyorlar, hepsi dahili kullanım. Eğer kırılırsa, tamir ederler ve bunu normal işlemlerine dahil ettiler.
REST veya başka herhangi bir şeyden esneklik, karmaşıklığı doğurur. Basit ve hızlı istiyorsanız, o zaman onu esnek yapmazsınız, "sadece yaparsınız" ve bitirdiniz. Sistemlere soyutlamalar ve referansların kaldırılması ekledikçe, işler daha da zorlaşır, daha fazla kazan plakası, test edilecek daha fazla kod.
REST'in çoğu, "buna ihtiyacınız olmayacak" mermi noktasında başarısız oluyor. Tabii ki yapana kadar.
İhtiyacınız olursa, kullanın ve düzenlendiği gibi kullanın. REST, HTTP üzerinden ileri geri hareket etmiyor. Hiç olmadı, bundan çok daha yüksek seviyede.
Ancak REST'e ihtiyacınız olduğunda ve REST'i kullandığınızda, HATEOAS bir gerekliliktir. Paketin bir parçası ve onu işe yarayan şeyin anahtarı.