ไม่มีใครในชุมชน REST พูดว่า REST เป็นเรื่องง่าย HATEOAS เป็นเพียงหนึ่งในแง่มุมที่เพิ่มความยากให้กับสถาปัตยกรรม REST
ผู้คนไม่ได้ทำ HATEOAS ด้วยเหตุผลทั้งหมดที่คุณแนะนำ: มันยาก เพิ่มความซับซ้อนให้กับทั้งฝั่งเซิร์ฟเวอร์และไคลเอนต์ (หากคุณต้องการได้รับประโยชน์จากมันจริงๆ)
อย่างไรก็ตามผู้คนหลายพันล้านคนได้สัมผัสกับประโยชน์ของ REST ในวันนี้ คุณรู้หรือไม่ว่า URL "ชำระเงิน" ที่ Amazon คืออะไร? ฉันไม่. แต่ฉันสามารถชำระเงินได้ทุกวัน URL นั้นมีการเปลี่ยนแปลงหรือไม่? ฉันไม่รู้ฉันไม่สนใจ
คุณรู้หรือไม่ว่าใส่ใจ? ใครก็ตามที่เขียนหน้าจอคัดลอกไคลเอนต์อัตโนมัติของ Amazon ผู้ที่มีแนวโน้มที่จะสูดดมปริมาณการใช้งานเว็บอย่างระมัดระวังอ่านหน้า HTML ฯลฯ เพื่อค้นหาลิงก์ที่จะโทรหาเมื่อใดและกับสิ่งที่จ่าย
และทันทีที่ Amazon เปลี่ยนกระบวนการภายในและโครงสร้าง URL ไคลเอนต์ฮาร์ดโค้ดเหล่านั้นก็ล้มเหลวเพราะลิงก์พัง
แต่นักท่องเว็บทั่วไปสามารถจับจ่ายซื้อของได้ตลอดทั้งวันโดยแทบจะไม่สะดุด
นั่นคือ REST ในการดำเนินการมันเป็นเพียงการเสริมแต่งโดยมนุษย์ที่สามารถตีความและใช้อินเทอร์เฟซที่ใช้ข้อความจดจำกราฟิกขนาดเล็กที่มีรถเข็นช็อปปิ้งและแยกแยะความหมายที่แท้จริง
คนส่วนใหญ่เขียนซอฟต์แวร์ไม่ทำเช่นนั้น คนส่วนใหญ่ที่เขียนไคลเอนต์อัตโนมัติไม่สนใจ คนส่วนใหญ่พบว่าการแก้ไขลูกค้าของตนทำได้ง่ายกว่าเมื่อพวกเขาทำผิดพลาดมากกว่าที่จะสร้างแอปพลิเคชันให้ไม่พังตั้งแต่แรก คนส่วนใหญ่มีลูกค้าไม่เพียงพอในส่วนที่สำคัญ
หากคุณกำลังเขียน API ภายในเพื่อสื่อสารระหว่างสองระบบด้วยการสนับสนุนทางเทคนิคจากผู้เชี่ยวชาญและไอทีทั้งสองด้านของการรับส่งข้อมูลผู้ที่สามารถสื่อสารการเปลี่ยนแปลงได้อย่างรวดเร็วเชื่อถือได้และมีกำหนดการเปลี่ยนแปลง REST จะไม่ซื้ออะไรให้คุณ คุณไม่จำเป็นต้องใช้แอปของคุณไม่ใหญ่พอและมีอายุการใช้งานไม่นานพอที่จะมีความสำคัญ
ไซต์ขนาดใหญ่ที่มีฐานผู้ใช้จำนวนมากมีปัญหานี้ พวกเขาไม่เพียงแค่ขอให้ผู้คนเปลี่ยนรหัสไคลเอนต์ด้วยความตั้งใจเมื่อโต้ตอบกับระบบของพวกเขา กำหนดการพัฒนาเซิร์ฟเวอร์ไม่เหมือนกับตารางการพัฒนาไคลเอ็นต์ การเปลี่ยนแปลงอย่างกะทันหันของ API นั้นไม่สามารถยอมรับได้สำหรับทุกคนที่เกี่ยวข้องเนื่องจากเป็นการรบกวนการรับส่งข้อมูลและการดำเนินการทั้งสองฝ่าย
ดังนั้นการดำเนินการเช่นนี้น่าจะได้รับประโยชน์จาก HATEOAS มากเนื่องจากเป็นเวอร์ชันที่ง่ายกว่าง่ายกว่าสำหรับไคลเอนต์รุ่นเก่าในการโยกย้ายและเข้ากันได้แบบย้อนหลังได้ง่ายกว่าไม่
ไคลเอนต์ที่มอบหมายเวิร์กโฟลว์ส่วนใหญ่ไปยังเซิร์ฟเวอร์และดำเนินการตามผลลัพธ์จะมีประสิทธิภาพในการเปลี่ยนแปลงเซิร์ฟเวอร์มากกว่าไคลเอนต์ที่ไม่
แต่คนส่วนใหญ่ไม่ต้องการความยืดหยุ่นนั้น พวกเขากำลังเขียนโค้ดเซิร์ฟเวอร์สำหรับ 2 หรือ 3 แผนกเป็นการใช้งานภายในทั้งหมด ถ้ามันพังพวกเขาจะแก้ไขและพวกเขาได้นำปัจจัยนั้นมาใช้ในการทำงานปกติ
ความยืดหยุ่นไม่ว่าจะเป็นจาก REST หรือสิ่งอื่นใดล้วนก่อให้เกิดความซับซ้อน หากคุณต้องการให้มันง่ายและรวดเร็วคุณก็ไม่ทำให้มันยืดหยุ่นคุณ "แค่ทำ" และทำให้เสร็จ เมื่อคุณเพิ่ม abstractions และ dereferencing ให้กับระบบแล้วสิ่งต่างๆก็ยากขึ้นแผ่นบอยเลอร์มากขึ้นมีโค้ดให้ทดสอบมากขึ้น
REST ส่วนใหญ่ล้มเหลวในสัญลักษณ์แสดงหัวข้อย่อย "คุณไม่จำเป็นต้องใช้" จนกว่าจะถึงวันนั้นแน่นอน
ถ้าคุณต้องการก็ใช้และใช้ตามที่วางไว้ REST ไม่ได้ดึงข้อมูลไปมาผ่าน HTTP ไม่เคยมีมาก่อนระดับสูงกว่านั้นมาก
แต่เมื่อคุณต้องการ REST และคุณใช้ REST ดังนั้น HATEOAS ก็เป็นสิ่งจำเป็น เป็นส่วนหนึ่งของแพ็กเกจและเป็นกุญแจสำคัญในการทำงาน