Актуальные примеры для HATEOAS (REST-архитектура)

129

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

  • 3
    Я нахожу это интересным, так как многие люди утверждают, что REST "прост", но сам Филдинг говорит, что, хотя это простая архитектура, не так просто разработать приложение с ее помощью.
  • 3
    Между прочим, это должен быть HATEOAS, а не HATEOS, в последнем случае Google не очень хорошо.
Показать ещё 3 комментария
Теги:
rest
hateoas

5 ответов

101
Лучший ответ

Это не реализация в смысле запуска кода, но мне очень нравится статья "" Как получить чашку кофе "в InfoQ, В нем описывается процесс заказа кофе в Starbucks в качестве протокола RESTful. Это выходит за рамки типичной статьи" ВСЕ - ресурс" REST и фокусируется на HATEOAS. Очень рекомендуется.

  • 5
    Книга Джима Уэббера, Саяса Парастатидиса и Яна Робинсона «Отдых на практике» весьма полезна
  • 2
    Статья хороша, но, к сожалению, API, который она описывает, не строго придерживается принципа HATEOAS, потому что она не использует пользовательские типы носителей. Как клиент узнает, как управлять (например, десериализовать, анализировать, отображать) каждым ресурсом, если все является application / xml? Это будет зависеть от некоторых нестандартных способов передачи этой информации, таких как документация, предназначенная для чтения людьми.
22

Как насчет Sun Cloud API? Из введения:

API не предполагает никакой конкретной структуры в пространстве URI. Отправной точкой является URI, предоставляемый поставщиком облачных сервисов, который идентифицирует само облако. Представление облака содержит URI для других ресурсов в облаке, а также для операций, которые могут выполняться на них (например, развертывание и запуск виртуальных машин).

Кроме того, может помочь и backstory.

  • 2
    Это предыстория, которая заставила меня начать путь HATEAOS.
  • 2
    все ссылки мертвы
6

Netflix имеет REST API на основе HATEOAS, который включает ссылки как часть ресурсов.

  • 1
    и теперь код состояния 404.
  • 1
    @ Сарджент ссылки не работает, пожалуйста, обновите.
Показать ещё 4 комментария
3

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

2

Является ли RESTfulness API Sun Cloud фактически адресованным в Roy 4-й точке:

API REST не должен определять фиксированные имена ресурсов или иерархии (очевидное соединение клиента и сервера). Серверы должны иметь свободу контролировать свое пространство имен. Вместо этого разрешите серверам указывать клиентам, как создавать соответствующие URI, например, в HTML-формах и шаблонах URI, определяя эти инструкции в типах медиа и связных отношениях. [Ошибка здесь подразумевает, что клиенты принимают структуру ресурсов из-за внеполосной информации, такой как стандарт для домена, который является ориентированным на данные эквивалентом функциональной связи RPC].

Пример 1 Исправлены имена ресурсов в определенном heirachy:

Из API Sun Cloud: "... представление VDC будет включать в себя представления о кластерах, которые его населяют, что, в свою очередь, включает представления виртуальных машин в каждом кластере".

Пример 2 внеполосная информация, такая как стандарт для домена:

У вас должно быть содержимое вики-страницы (внеполосная информация), чтобы знать, что "механизм связи ресурсов" для поля облачных ресурсов "uri" - GET.

  • 2
    Вы правы, это очень вводит в заблуждение. Однако Рой говорит об именах ресурсов в пространстве uri, а не в содержимом типа носителя. Sun может в любое время изменить URI, используемый для доступа к кластеру. Очевидно, что он не может изменить термин «кластер» на «группу» внутри представления без создания новой версии типа носителя, но он может изменить URI на что угодно.
  • 4
    Мы знаем, что Sun API использует HTTP в качестве унифицированного интерфейса, поэтому клиенту не нужно просматривать вики-страницу, чтобы узнать, что GET является допустимым глаголом для облачного ресурса. Он может либо просто попробовать, учитывая, что знает, что GET является безопасным глаголом, либо он может использовать OPTIONS, чтобы определить, доступен ли он.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню