Когда я должен использовать AtomPub?

13

Я проводил некоторые исследования в области дизайна веб-сервисов RESTful и достиг того, что, по моему мнению, является ключевым моментом для принятия решения, поэтому я решил предложить его сообществу, чтобы получить совет.

В соответствии с принципами архитектуры RESTful, я хочу представить открываемый API, поэтому я буду максимально поддерживать различные HTTP-глаголы. Моя трудность связана с выбором представления этих ресурсов. Видите ли, мне было бы легко придумать свой собственный API, который описывает, как должны отображаться результаты поиска и как предоставляются ссылки на другие ресурсы, но это будет уникально для моего приложения.

Я читал о протоколе публикации Atom ( RFC 5023 ) и о том, как OData способствует его использованию, но, похоже, он добавляет дополнительный уровень абстракции к тому, что (в настоящее время) является довольно простым API.

Итак, мой вопрос, когда разработчик должен выбрать AtomPub в качестве своего выбора представления - если вообще? И если нет, то каков текущий рекомендуемый подход?

Гэри Роу
источник
1
Здесь есть интересная дискуссия: comments.gmane.org/gmane.comp.web.services.rest/16023
Гари Роу,

Ответы:

11

Проведя достаточное количество исследований в этой области, вот мои выводы:

Кажется, есть 3 основных формата и подхода: AtomPub, OData и HAL. Я подвел итог исследования для каждого ниже.

AtomPub

  • Pro: хорошо установленный стандарт
  • Pro: Работает с XML и JSON
  • Pro: имеет отличную поддержку Java через Apache Abdera
  • Con: Абдера вводит много зависимостей
  • Con: Очень сложный для работы на стороне сервера
  • Con: сложно построить полноценный клиент JavaScript

OData

  • Pro: Сборка на AtomPub
  • Pro: Работает с XML и JSON
  • Pro: Имеет хорошую поддержку Java через проект odata4j
  • Pro: Обеспечивает хорошую структуру запроса URI

  • Con: вводит полную структуру (по сути, заменяет Dropwizard)

  • Против: Очень сложный для работы, особенно модель данных объекта (EDM)
  • Против: Сложно найти хорошую клиентскую библиотеку JavaScript без использования инструментов только для Windows для EDM

HAL

  • Pro: вводит легкий и расширяемый подход
  • Pro: Работает с XML и JSON
  • Pro: тривиально создать модель JAXB для ее реализации (без зависимостей)
  • Pro: обеспечивает хорошую структуру ссылок
  • Pro: тривиально, чтобы создать клиент JavaScript с использованием синтаксического анализа jQuery XML
  • Против: Не ратифицирован (хотя к IETF обращались)

Итак, когда я должен использовать AtomPub?

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

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

Гэри Роу
источник