Сейчас в тренде предлагать RESTful сервисы для любого веб продукта, и Joomla не исключение. Однако в Joomla нет предпочтительного варианта написания RESTful сервисов, поэтому многие пытаются создать свое расширение для включения RESTful сервисов в Joomla. В этом материале рассмотрены доступные на данный момент подходы и преимущества их использования.
Использование типа документа JSON (format=json)
JSON over REST – это, наверное, самый старый и распространённый вариант. Такой метод поддерживается Joomla, и разработчикам всего лишь нужно предоставить view.json.php для отображения данных из модели в JSON. Framework on Framework (FOF) сделал шаг вперед, вам даже не надо создавать этот файл, если по умолчанию вас устраивают такие выходные данные.
Преимущества
- Не нужны дополнительные расширения
- Находится непосредственно в компоненте, так что очень просто использовать методы модели
Недостатки
- Нет хорошего подхода для POST запросов, так что идеально только для выборки данных
API component (com_api)
com_api – это компонент, поддерживаемый Techjoomla и который следует архитектуре, построенной на плагинах. Разработчики пишут свои приложения (плагины), которые содержат несколько ресурсов. Например, приложение User может иметь ресурсы для выборки и сохранения данных пользователя и отдельный ресурс для логина. Аналогично приложение Content может иметь ресурсы для материалов и категорий. Это позволяет реализовывать все GET, POST, PUT и DELETE методы.
Преимущества
- Очень близко к реализации REST
- Структура плагина предоставляет гибкость при внедрении REST ресурсов
- Могут быть созданы сложные модели данных, так как ни один из ресурсов не привязан к модели
- Возможность реализовать собственную систему обработки ошибок
Недостатки
- Могут образовываться излишки кода, если методы модели не мог повторно использоваться для выборки и сохранения данных
Концепт приложения webservices
Понимая необходимость в веб-сервисах, Chris Davenport создал очень детальную спецификацию API для рабочей группы по веб-сервисам. Концепт содержит несколько примеров ресурсов и предлагаемую/возможную реализацию веб-сервисов. Эта спецификация на самом деле не описывает, как это должны быть сделано, и больше является руководством по URL и структурам данных. Рабочий пример концепта находится здесь.
Преимущества
- Как только окрепнет, станет вариантом по умолчанию в Joomla
- Поддержка многоязычности
Недостатки
- Находится в ранней стадии разработки
Есть ли еще варианты по созданию RESTful сервисов? Делитесь в комментариях.
Это перевод материала 3 ways to do RESTful APIs in Joomla.