2009-07-16 6 views
129

, как все, возможно, заметили, в дикой природе есть много поддельных/рудиментарных REST-API (которые реализуют HTTP-API и называют его REST, не следуя гипертекстовым требования к состоянию приложения, что привело к famous rant of Roy T. Fielding, человеку, впервые указав REST-парадигму).Фактические примеры для HESTOAS (REST-architecture)

Я не смог найти практических примеров реалистичной REST-реализации, основанной на гипертексте, а также связанных с конкретными приложениями определений типов мультимедиа для переходов состояний.

Существуют ли общедоступные примеры таких реализаций?

+3

Мне это интересно, поскольку многие люди утверждают, что REST «прост», но сам Филдинг говорит, приложение с ним. – aehlke

+3

, кстати, это должен быть HATEOAS, а не HATEOS, а позже не google хорошо. –

+1

http://restcookbook.com/Basics/hateoas/ – Ben

ответ

98

Его не реализация в смысле запуска кода, но мне очень нравится статья «How to GET a cup of coffee» на InfoQ. В нем описывается процесс заказа кофе в Starbucks в качестве протокола RESTful. Это выходит за рамки типичной статьи «ВСЕ - ресурс» REST и фокусируется на HATEOAS. Настоятельно рекомендуется.

+5

Книга " «Отдых на практике» Джима Уэббера, Сайаса Парастатидиса и Иана Робинсона вполне полезна – DomreiRoam

+1

Статья прекрасна, но, к сожалению, API, который он описывает, строго придерживается принципа HATEOAS, поскольку он не использует пользовательские типы носителей. Как клиент знает, как манипулировать (например, десериализовать, анализировать, отображать) каждый ресурс, если все это application/xml? Это будет зависеть от некоторых нестандартных способов передачи этой информации, таких как документация, предназначенная для чтения людьми. – ygormutti

21

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

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

backstory также может быть полезно.

+2

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

+1

все ссылки мертвы – rvheddeg

+1

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18137774) –

2

Разве это не стабильность, спокойствие в ВС Cloud API на самом деле рассматривается в 4-ом пункте Роя:

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

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

От ВС Cloud API:»... представление о VDC будет включать в себя представление Кластеров, которые населяют его, в свою очередь, включают представления виртуальных машин в каждом кластере ».

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

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

+2

Вы правы, что очень вводит в заблуждение. Тем не менее, Рой говорит об именах ресурсов в пространстве uri, а не в содержимом типа медиа. Sun может свободно изменять uri, который используется для доступа к кластеру в любое время. Очевидно, что он не может изменить термин «кластер» на «группу» внутри представления без создания новой версии типа носителя, но он может изменить URI на что угодно. –

+4

Мы знаем, что Sun API использует HTTP как единый интерфейс, поэтому клиенту не нужно смотреть на wiki-страницу, чтобы знать, что GET является допустимым глаголом для облачного ресурса. Он может просто попробовать, учитывая, что он знает, что GET - это безопасный глагол, или он может использовать ОПЦИИ, чтобы определить, доступен ли он. –

6

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

+5

500s сейчас, что является позором :-( – Rikki

+1

и в настоящее время код состояния 404. – naXa

+1

@Wall Sargent ссылка была сломана, пожалуйста, уточните. – piechuckerr

3

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

Смежные вопросы