2014-11-03 10 views
1

В настоящее время я изучаю методы REST с помощью отличной книги Ричардсона «RESTful Web Services». Я хотел бы спроектировать REST API, который следует за моделью зрелости Ричардсона, особенно 3-го уровня, называемого HATEOAS, который, по-видимому, является наиболее сложным для обработки.REST: формы, ссылки и формат гипермедиа

Во-первых, я действительно не понимаю различное значение между ссылкой и формой? (Относительно гипермедиа, я знаю объяснение HTML ..). Это просто вопрос «ссылка для метода GET» и «форма для методов GET/POST/PUT»?

EDIT1: Я получил точку: формы могут быть формы применения для построения URI и использовать метод GET или может быть ресурсов формы для методов PUT/POST (более или менее то, что я просил). Исправьте меня, если я ошибаюсь, ссылки должны тщательно использоваться клиентом с помощью метода OPTIONS, чтобы узнать, как он может быть использован.

Как я хочу быть совместимым с HATEOAS, мне нужно выбрать формат гипермедиа ... и я знаю, что существует несколько таких форматов, как Siren, HAL, Collection + JSON, JSON-LD, Hydra и т. Д. .. Но хорошо, я не знаю, какой из них использовать?

В книге Ричардсона он использует xHTML, который имеет одну основную точку: тестирование вашего API с помощью браузера. Но xHTML кажется тяжелым. Я бы предпочел что-то более легкое, но недавний формат гипермедиа (Siren, HAL, ...), вероятно, слишком свежий и сложный для тестирования без программируемого клиента.

+0

Можете ли вы представить один четкий вопрос? Непонятно, о чем вы спрашиваете. –

+0

Это все о гипермедиа: разница между двумя понятиями (ссылки и формы) и какой формат гипермедиа я должен использовать. Не может быть более ясным. – Poke

+1

HAL & Siren оба имеют очень хорошие браузеры. http://haltalk.herokuapp.com/explorer/browser.html#/ & http://siren-browser.herokuapp.com/ –

ответ

2

Я бы определенно рекомендовал вам попробовать использовать формат сирены для вашего API. Как они правильно упоминали в одном из комментариев в имеет хороший браузер ... но этот плохо поддерживается (вы можете увидеть его в своем репозитории github).

Таким образом, вы должны использовать this one, который был основан на первом упоминается, но она имеет некоторые дополнительную, как: хорошие обработки ошибок & поддерживает действия для вложенных сущностей (среди прочих)

относительно разницы между связью и формами ... хорошо мои 5 центов - это то, что вы используете ссылки для запросов GET, которые не требуют входных параметров вашего клиента и действий (говорящих в формате сирены) для POST, PUT, PATCH, GET, которые требуют отправки некоторых параметров на сервер.

Теперь вы могли бы сказать: «Но у меня может быть эта ссылка http://testsite.com/api/v1/users?param1=value1» и все еще будут проходить параметры. Вы правы, НО !, как теперь ваш клиент мог бы передать тот или иной параметр.

Вот почему у вас есть действия с ключом под названием «поля», где вы описываете поля, которые вы готовы принять.

Наслаждайтесь API гипермедиа!

+0

Мне было интересно, достигнет ли Сирена стабильной версии? Потому что, с другой стороны, я видел, что Hydra подталкивает W3C ... но кажется, что это слишком недавно? – Poke

+1

Извините, что комментарий еще раз. Просто найдите полезную ссылку, которая сравнивает CollectionsJSON/HAL/Siren: https://github.com/kevinswiber/siren/issues/15; Сирена, кажется, в порядке! – Poke

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

  • Нет связанных вопросов^_^