Ніхто з громади REST не каже, що REST - це легко. HATEOAS - лише один із аспектів, який створює труднощі архітектурі REST.
Люди не роблять HATEOAS з усіх запропонованих вами причин: важко. Це додає складності як стороні сервера, так і клієнту (якщо ви насправді хочете отримати вигоду від цього).
ЗАРАЗ, мільярди людей сьогодні відчувають переваги REST. Чи знаєте ви, що таке "касова" URL-адреса в Amazon? Я не. Але я можу оформити замовлення щодня. Чи змінилася ця URL-адреса? Я не знаю, мені все одно.
Чи знаєте ви, що це хвилює? Кожен, хто написав екран, вискоблював автоматизований клієнт Amazon. Хтось, ймовірно, кропітко нюхав веб-трафік, читав HTML-сторінки тощо, щоб знайти, які посилання дзвонити, коли і з якими корисними навантаженнями.
І як тільки Amazon змінив свої внутрішні процеси та структуру URL-адрес, ці жорстко кодовані клієнти не змогли - через те, що посилання порвалися.
Тим не менш, випадкові веб-серфери мали змогу ходити по магазинах цілий день з навряд чи причепом.
Це REST в дії, це просто доповнене людиною, яке вміє інтерпретувати та інтуїцію текстового інтерфейсу, розпізнавати невелику графіку із кошиком для покупок та виясняти, що це насправді означає.
Більшість людей, які пишуть програмне забезпечення, не роблять цього. Більшість людей, які пишуть автоматизованих клієнтів, не хвилюються. Більшість людей легше виправити своїх клієнтів, коли вони ламаються, ніж інженер програми, щоб не зламати в першу чергу. Більшість людей просто не мають достатньо клієнтів, де це важливо.
Якщо ви пишете внутрішній API для спілкування між двома системами з експертною технічною підтримкою та ІТ з обох сторін трафіку, які здатні швидко, надійно та з графіком змін повідомляти зміни, тоді REST нічого не купує. Вам це не потрібно, ваш додаток недостатньо великий, і це не так довго, щоб мати значення.
Великі сайти з великою базою користувачів мають цю проблему. Вони не можуть просто попросити людей змінити код свого клієнта на примху під час взаємодії зі своїми системами. Графік розробки серверів не такий, як графік розробки клієнтів. Різкі зміни в API просто неприйнятні для всіх учасників, оскільки вони порушують трафік та операції з обох сторін.
Таким чином, така операція, швидше за все, виграє від HATEOAS, оскільки це легше версія, старші клієнти легше мігрувати, легше бути назад сумісною, ніж ні.
Клієнт, який делегує більшу частину свого робочого потоку на сервер і діє за результатами, набагато надійніший для змін на сервері, ніж клієнт, який цього не робить.
Але більшості людей не потрібна така гнучкість. Вони пишуть код сервера для 2 або 3 відділів, це все внутрішнє використання. Якщо це зламається, вони це виправляють, і вони це враховують до своїх звичайних операцій.
Гнучкість, будь то REST чи щось інше, спричиняє складність. Якщо ви хочете, щоб це було просто і швидко, ви не зробите його гнучким, ви "просто зробите це", і будете зроблені. Коли ви додаєте до абстракцій та перенаправлення до систем, тоді матеріал стає складніше, більше пластини котла, більше коду для перевірки.
Більшість REST не вдається "кулі" вам це не знадобиться ". Поки, звичайно, не зробите.
Якщо вам це потрібно, тоді використовуйте його та використовуйте так, як це викладено. REST не пересуває речі туди-сюди через HTTP. Це ніколи не було, це набагато вищий рівень за це.
Але коли вам потрібен REST, а ви використовуєте REST, то HATEOAS - це необхідність. Це частина пакету і ключ до того, що змушує його взагалі працювати.