HATEOAS с JSON через HTTP

У меня есть простой CRUD-подобный Web-API, использующий JSON поверх HTTP (хранилище Person лица, приложение контактов). Теперь я хотел бы разработать его так, чтобы он хорошо вписывался в архитектуру RESTful. Все довольно просто, кроме одного:

Как я могу выполнить ограничение HATEOAS, если у меня нет HTML? Что хорошего, устанавливает способы сделать HATEOS, если основным (в настоящее время единственным) типом контента является JSON, который просто содержит фактические сущности за ресурсом / URL?

Одна вещь, которая приходит на ум, это link Заголовок HTTP, но так ли это?

2 ответа

В то время как обычный JSON не позволяет связывать отношения, существуют и другие типы медиа, основанные на JSON (во многом аналогично тому, как Atom создает XML). Мой личный фаворит - язык приложений гипертекста (HAL).

Как я понимаю, заголовки ссылок, они должны использоваться для типов мультимедиа, которые действительно не предоставляют ссылки... такие вещи, как изображения и другие нетекстовые ресурсы. Хотя вы можете использовать заголовки ссылок для текстовых ресурсов, вы не обладаете такой же гибкостью, чтобы ориентироваться на отдельные части ресурса; вы в значительной степени застряли на ссылки со всего ресурса.

Не усложняйте вещи специальными типами носителей. В магистерской работе я воспользовался заголовком ссылки для подключения к другим связанным ресурсам. Кроме того, я добавил гиперссылки в json, используя комбинацию типа URL-ссылки и URL-ссылки http. Json - это не гипермедиа формат, но его можно использовать как один. См. JSON MIME: vnd.collection + JSON.

Лучший совет, который я могу дать, это как можно больше использовать заголовок ссылки, пока сообщество не решит, как реализовать hateoas в API. Используйте уже доступные типы отношений (микротип) и определите свои собственные.

Другие вопросы по тегам