ในขณะที่ฉันเข้าใจว่า HATEOAS นั้นเกี่ยวกับการส่งลิงก์ตอบกลับแต่ละลิงก์พร้อมด้วยข้อมูลเกี่ยวกับสิ่งที่ต้องทำ ตัวอย่างง่ายๆอย่างหนึ่งสามารถพบได้ง่ายบนอินเทอร์เน็ต: ระบบธนาคารพร้อมกับทรัพยากรบัญชี ตัวอย่างแสดงการตอบสนองนี้หลังจากได้รับการร้องขอไปยังทรัพยากรบัญชี
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>
ร่วมกับข้อมูลมีลิงค์บอกสิ่งที่สามารถทำได้ต่อไป หากยอดคงเหลือเป็นลบเรามี
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>
เพื่อให้เราสามารถฝากได้เท่านั้น ไม่เป็นไรถ้าเราใช้พู้ทำเล่นหรือร้องขอกับเบราว์เซอร์เราสามารถเห็นสิ่งที่สามารถทำได้อย่างง่ายดาย ข้อมูลประเภทนี้มีประโยชน์สำหรับเราในการค้นหาความสามารถของ API และเซิร์ฟเวอร์ถูกแยกจากลูกค้า
อย่างไรก็ตามประเด็นก็คือเมื่อเราสร้างลูกค้าเช่นสปาที่มี Javascript หรือแอพ Android หรือสิ่งอื่น ๆ อีกมากมายฉันไม่สามารถเห็นได้ว่า HATEOAS มีความเกี่ยวข้องกันอย่างไร สิ่งที่ฉันหมายถึงมีดังต่อไปนี้: เมื่อฉันเขียนรหัส SPA ใน javascript ฉันต้องรู้สิ่งที่สามารถทำได้ใน API เพื่อที่จะเขียนโค้ด
ดังนั้นฉันจำเป็นต้องรู้แหล่งข้อมูลวิธีการที่สนับสนุนสิ่งที่พวกเขาคาดหวังว่าจะได้รับและสิ่งที่พวกเขาให้คืนเพื่อเขียนการเรียก ajax ไปยังเซิร์ฟเวอร์และเพื่อสร้าง UI เมื่อฉันสร้าง UI ฉันต้องรู้ว่าหลังจากขอบัญชีผู้ใช้สามารถฝากเงินเข้าได้หรือฉันจะไม่สามารถให้ตัวเลือกนี้กับ UI ได้ นอกจากนี้ฉันจะต้องรู้จัก URI เพื่อทำการฝากเพื่อสร้างการโทร ajax
สิ่งที่ฉันหมายถึงคือเมื่อเราทำการร้องขอไปยัง API ลิงก์จะช่วยให้เราค้นพบและใช้ API ได้ดีขึ้น แต่เมื่อเราสร้างลูกค้าแอปที่เรากำลังสร้างจะไม่เพียงมองที่ลิงค์จากนั้นแสดงผลด้วยตัวเอง UI ที่ถูกต้องและโทร ajax ที่ถูกต้อง
ดังนั้น HATEOAS มีความสำคัญต่อลูกค้าอย่างไร ทำไมเราถึงรำคาญกับ HATEOAS ล่ะ?