Фактичні приклади для HATEOAS (архітектура REST) ​​[закрито]


140

як, можливо, всі помітили, в дикій природі існує багато підроблених / рудиментарних API REST (які реалізують HTTP-API і називають його REST, не дотримуючись вимоги стану гіпертексту як двигуна програми, що призвело до знаменитого рента Роя Т. Філдінга , людини, яка вперше вказала парадигму REST).

Мені не вдалося знайти жодних практичних прикладів реально реалізованої гіпертекстової REST-реалізації, а також пов'язані з нею специфічні для програми визначення медіа-типу для переходів стану.

Чи існують загальнодоступні приклади таких реалізацій?


3
Мені це здається цікавим, оскільки багато людей стверджують, що REST "простий", але сам Філдінг каже, що хоча це проста архітектура, створити додаток з нею не просто.
aehlke

3
до речі, це має бути HATEOAS, а не HATEOS, пізніше це не добре в Google.
Девід Руссель


2
Paypal, здається, використовує це: developer.paypal.com/docs/integration/direct/…
Андрій Тадеус Мартін,

Чи сам Рой Філдінг коли-небудь створював додаток, використовуючи HATEOAS?
системович

Відповіді:


102

Це не реалізація в сенсі запущеного коду, але мені дуже подобається стаття " Як отримати чашку кави " на InfoQ. Він описує процес замовлення кави у Starbucks як протокол RESTful. Це виходить за рамки типової вступної статті REST "все є ресурсом" і зосереджується на HATEOAS. Настійно рекомендується.


5
Книга "Відпочивай на практиці" Джима Вебера, Сая Парастатидіса та Іана Робінсона досить корисна.
DomreiRoam

2
Стаття чудова, але, на жаль, описаний в ній API не дотримується принципу HATEOAS, оскільки в ньому не використовуються користувацькі типи медіа. Як клієнт може знати, як маніпулювати (наприклад, десяриалізувати, проаналізувати, показати) кожен ресурс, якщо все є програмою / xml? Це залежало б від деяких нестандартних способів передачі цієї інформації, як-от документація, яку люди повинні читати.
ygormutti

21

Як щодо API Sun Cloud ? Зі вступу:

API не передбачає особливої ​​структури в просторі URI. Вихідною точкою є URI, наданий постачальником хмарних послуг, який ідентифікує саму хмару. Представлення хмари містить URI для інших ресурсів у хмарі, а також для операцій, які можуть бути виконані над ними (наприклад, розгортання та запуск віртуальних машин).

The історія також може бути корисною.


2
Саме ця історія змусила мене запуститись по шляху HATEAOS.
CyberFonic

3
всі посилання мертві
Roeland Van Heddegem

"Нам шкода, сайт kenai.com закритий."
Нік Роландо

@NickRolando, я замінив посилання.
Багатий Аподака

@RichApodaca, історія посилання мертва.
Вашанта Ганеш K

7

Netflix має REST API на базі HATEOAS, який включає посилання як частину ресурсів.


1
і тепер код статусу 404.
naXa

1
@Чи буде Саргенське посилання розірвано, оновіть його.
Govi S

Вибачте, схоже, що Netflix зняв його і пішов із чимось іншим.
Буде Сарджент

2
Відповіді лише на посилання є менш актуальними, коли такі посилання відмерли.
nyedidikeke

@nyedidikeke - це посилання, але відповідь у цьому контексті, вам просто потрібно виправити посилання, редагуючи пост!
Аль-Мотафар

3

Хіба не RESTfulness API Sun Cloud насправді розглянуто у 4-й точці Роя:

API REST не повинен визначати імена фіксованих ресурсів або ієрархії (очевидно, що з'єднання клієнта і сервера). Сервери повинні мати свободу контролювати власний простір імен. Натомість дозвольте серверам проінструктувати клієнтів щодо побудови відповідних URI, таких як це робиться у формах HTML та шаблонах URI, шляхом визначення цих інструкцій у межах типів медіа та зв’язків зв’язків. [Відмова тут означає, що клієнти приймають структуру ресурсів через позадіапазонну інформацію, таку як доменний стандарт, який є орієнтованим на дані, еквівалентному функціональному зв'язку RPC].

Приклад 1 Фіксовані імена ресурсів у визначеній герахії:

З API Sun Cloud: "... представлення VDC буде включати представлення кластерів, які його населяють, що, в свою чергу, включає представлення VM в кожному кластері".

Приклад 2 Інформація про позадіапазонні, наприклад стандарт, що стосується домену:

Ви повинні мати вміст сторінки вікі (інформація про позадіапазонну інформацію), щоб знати, що "механізм комунікації ресурсів" для поля хмарних ресурсів "uri" є GET.


2
Ви правильно, це дуже вводить в оману. Однак Рой говорить про назви ресурсів в урі-просторі, а не в змісті типу медіа. Sun може вільно змінити урі, які використовуються для доступу до кластеру в будь-який час. Очевидно, що він не може змінити термін "кластер" на "групувати" всередині представництва без створення нової версії типу медіа, але він може змінити URI на будь-що.
Даррел Міллер

4
Ми знаємо, що API Sun використовує HTTP як єдиний інтерфейс, тому клієнту не потрібно дивитись на вікі-сторінку, щоб знати, що GET є дійсним дієсловом для хмарного ресурсу. Він може або просто спробувати, враховуючи, що він знає, що GET - це безпечне дієслово, або він може використовувати OPTIONS, щоб визначити, чи він доступний.
Даррел Міллер

3

Я зрозумів, що це було запитано деякий час тому назад, але я взяв удар, демонструючи "належний" потік API REST для простого прикладу. Я намагався слідувати правилам Роя для REST - можливо, це може допомогти: Приклад API, використовуючи REST

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.