AFAIK Філдінг не стверджував, що REST не є корисним, він просто описував фактичну архітектуру Інтернету.
Я б подумав, що це трохи продає це. Зрештою, REST - це перелік архітектурного стилю, який Філдінг використовував як головний архітектор специфікації HTTP / 1.1 .
Але чи є насправді підстави вважати REST бажаною архітектурою для цього домену? Чи є докази, які говорять про те, що HATEOAS є вигідним принципом проектування для зв'язку між машиною і машиною?
"Це залежить". HATEOAS є частиною єдиного обмеження інтерфейсу REST.
Застосовуючи принцип спільності інженерії програмного забезпечення до компонентного інтерфейсу, спрощується загальна архітектура системи та покращується видимість взаємодій. Реалізація відривається від послуг, які вони надають, що сприяє незалежній еволюції. Однак, компроміс полягає в тому, що рівномірний інтерфейс знижує ефективність, оскільки інформація передається в стандартизованому вигляді, а не такому, який є специфічним для потреб програми. Інтерфейс REST розроблений таким чином, щоб він був ефективним для передачі даних із великими зернами гіпермедіа, оптимізуючи для загального випадку Інтернет, але в результаті створював інтерфейс, який не є оптимальним для інших форм архітектурної взаємодії.
Тож давайте на мить подумаємо, що це означає. Коли у мене виникають проблеми з моїм бездротовим маршрутизатором, я можу спілкуватися з ним за допомогою того самого браузера, який я використовую для надсилання відповіді на stackexchange. Зокрема, не має значення, який браузер я використовую, чи мій браузер на кілька оновлень позаду (або попереду) того, що очікує маршрутизатор. Не має значення, що інженерна організація, яка написала браузер, абсолютно не залежить від організації, яка створила інтерфейс маршрутизатора.
Це просто працює .
Це, звичайно, не універсально. Філдінг у 2008 році написав:
Це не означає, що я думаю, кожен повинен проектувати власні системи відповідно до архітектурного стилю REST. REST призначений для довготривалих мережевих додатків, що охоплюють кілька організацій. Якщо ви не бачите потреби в обмеженнях, тоді не використовуйте їх.
Обмеження, що формують архітектурний стиль REST, були обрані для властивостей, які вони викликають; якщо ці властивості не є цінними для вашого випадку використання, то ви повинні абсолютно розглянути можливість скасування відповідних обмежень.
Там, де машина в машині стає важкою, це те, що ви втратили здатність людини нечітко відповідати семантиці, представленій уявленнями. Клієнти можуть отримати досвід, знаючи лише типи засобів масової інформації, але ми, як правило, по-людськи дивимося на семантичні підказки, щоб отримати сенс.
schema.org - одна з частин зусиль для створення машиночитаного словника; машинні агенти використовують клієнта, щоб знайти смислові підказки, і застосовує власне розуміння сенсу, щоб вибрати правильні дії, які слід вжити.
Але це робота; вам потрібно вкласти гроші в розробку машинних представлень ваших ресурсів та забезпечення того, щоб ці представництва залишалися сумісними вперед та назад, щоб клієнти могли розвиватися самостійно.
Коли одна організація контролює і клієнта, і сервера, переваги цієї незалежності значно менші, і в цьому випадку обмеження не може бути відповідним архітектурним вибором.