Seperti yang saya pahami, HATEOAS pada dasarnya adalah tentang mengirim bersama dengan setiap tautan tanggapan dengan informasi tentang apa yang harus dilakukan selanjutnya. Satu contoh sederhana mudah ditemukan di internet: sistem perbankan bersama dengan sumber daya akun. Contoh ini menunjukkan respons ini setelah permintaan GET ke sumber daya akun
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>
Bersama dengan data ada tautan yang memberi tahu apa yang bisa dilakukan selanjutnya. Jika saldo negatif kita miliki
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>
Sehingga kita hanya bisa melakukan setoran. Tidak apa-apa, jika kita menggunakan Fiddler atau membuat permintaan dengan browser, kita dapat dengan mudah melihat apa yang bisa dilakukan. Informasi semacam ini berguna bagi kita untuk menemukan kemampuan API dan server dipisahkan dari klien.
Namun, intinya adalah bahwa ketika kita membangun klien, seperti SPA dengan Javascript, atau aplikasi Android atau banyak hal lainnya, saya tidak dapat melihat bagaimana HATEOAS terus menjadi relevan. Yang saya maksud adalah sebagai berikut: ketika saya sedang mengkode SPA dalam javascript, saya harus tahu apa yang bisa dilakukan dalam API untuk menulis kode.
Jadi saya perlu tahu sumber daya, metode yang didukung, apa yang mereka harapkan untuk terima dan apa yang mereka berikan kembali untuk menulis ajax panggilan ke server dan bahkan untuk membangun UI. Ketika saya membangun UI, saya harus tahu bahwa setelah meminta akun, seseorang dapat, misalnya, menyetorkannya, atau saya tidak akan dapat memberikan opsi ini pada UI. Juga, saya harus tahu URI untuk melakukan setoran untuk membangun panggilan ajax.
Maksud saya adalah, ketika kita membuat permintaan ke API, tautan memungkinkan kita menemukan dan menggunakan API dengan lebih baik, tetapi ketika kita membangun klien, aplikasi yang kita bangun tidak akan hanya melihat tautan dan kemudian dengan sendirinya membuat UI yang benar dan lakukan panggilan ajax yang tepat.
Jadi, bagaimana HATEOAS penting bagi klien? Kenapa sih kita repot-repot dengan HATEOAS?