Можно ли использовать пример/типичный пример использования HATEOAS? Я согласен, что это очень мощная концепция, обеспечивающая большую гибкость, но я не уверен, как правильно получить выгоду от HATEOAS. было бы здорово, если бы вы могли поделиться своим опытом/прецедентом.
Хороший вариант использования HATEOAS
Ответ 1
Хороший ответ от @dreamer выше, но HATEOAS отсутствует в большинстве сервисов на основе REST. Это ограничение стиля архитектуры REST, которое позволяет клиентам полностью взаимодействовать с сервисом через гипермедиа, содержащуюся в ресурсах.
Если вы посмотрите на API-интерфейс Twitter или Facebook REST, вы не найдете гипермедиа. Посмотрите на ресурс friendlist. В этом ресурсе нет гипертекстовых ссылок, которые можно использовать для перехода к состоянию ресурса - для удаления, обновления и т.д. Вместо этого вам необходимо прочитать документацию вне диапазона, чтобы понять, что вам нужно сделать, чтобы удалить эту ресурс.
Одним из заявленных преимуществ использования гипермедиа в ваших API-интерфейсах является то, что вы можете управлять изменениями в самих ресурсах. Например, что, если Facebook хочет добавить дополнительные функции в список frendlist? Если он был построен с учетом HATEOAS, ресурс будет обновлен, чтобы добавить гиперссылки, обеспечивающие эти дополнительные переходы состояния.
Если это звучит сложно, вы правы. Однако, как разработчик клиентских приложений, как только вы понимаете, как гипермедиа представлена, вы можете создавать приложения, которые будут развиваться вместе с самим API.
Итак, как вы создаете API с помощью HATEOAS? Существует несколько вариантов, но мне лучше Hypertext Application Language (HAL).
ОБНОВЛЕНИЕ. Поскольку вы попросили пример, здесь ссылка на демонстрацию с использованием HAL.
Ответ 2
Хорошие общедоступные случаи использования HATEOAS трудно найти, потому что в REST существует много заблуждений, и HATEOAS может быть трудно реализовать. Вам действительно нужно хорошо понимать свои преимущества, прежде чем вы захотите поставить себя на работу, чтобы заставить его работать, и если клиенты не будут следовать ему правильно, вся работа будет напрасной.
По моему опыту, внедрение надлежащего REST в компании - это изменение культуры так же важно, как переход к системам управления версиями или гибкое развитие. Если все не принимают его и не понимают, это вызывает больше проблем, чем решает.
Имея это в виду, я думаю, лучший пример, который вы найдете, это API-интерфейс foxycart.com HAL по ссылке ниже:
https://api-sandbox.foxycart.com/hal-browser/hal_browser.html#/
Ответ 3
Это очень мощная концепция, используемая в RESTful
представлении приложения клиенту. Сейчас существует много проектов, которые используют этот интерфейс. Типичным примером использования является Web Services APIs
с использованием API RESTful. API RESTful обычно состоит из следующих элементов:
- базовый URI, такой как http://example.com/resources/
- тип интернет-носителя для данных. Это часто JSON, но может быть любым другим допустимым типом интернет-медиа (например, XML, Atom, микроформаты, изображения и т.д.).
- стандартные методы HTTP (например, GET, PUT, POST или DELETE)
- гипертекстовые ссылки на исходное состояние
- гипертекстовые ссылки для ссылок на связанные ресурсы
Состояние приложения можно изменить, используя, например, выше HTTP methods
, чтобы получить конкретный ресурс. Клиент может выпустить REST query
с помощью curl
, например:
curl -X GET --url "http://example.com/resource/" -X "Content-Type:application/json"
вы можете пройти через man pages
для curl
и его использование. Подробнее о концепциях интерфейса RESTful можно прочитать в wiki