Как создать RESTful API с помощью Joomla

11

Я создаю расширения Joomla начиная с v1, но скоро мне нужно будет запустить API, который я создал и использовал некоторое время. В настоящее время я использую Joomla 2.5 и написал плагины для этой системы:

https://github.com/techjoomla/com_api

Прежде чем начать работу, я бы хотел как можно больше проверить систему в будущем. Этот компонент API только недавно начал обновляться для работы с Joomla v3, поэтому в настоящее время он препятствует обновлению сайта. Я также думаю, что разделение общедоступного API и пользовательского портала имеет смысл, поскольку нет смысла в том, чтобы быть интегрированным расширением, поскольку API будет использоваться мобильными приложениями.

В настоящее время планируется перестроить API на поддомене, что позволит нам обновить пользовательский портал. Я читал о новой платформе Joomla, которая выглядит захватывающе. Подойдет ли это для создания RESTful API для наших мобильных приложений? Если да, то они советы по началу работы? Я читал, что FoF может быть использован для создания API, будет ли это хорошим выбором? Я видел, как проект Kickstarter намеревался создать именно такой API, это потенциальный вариант? Должен ли я просто удалить текущий сайт 2.5 для субдомена, чтобы он только запускал API?

Будем весьма благодарны за любые предложения о наилучшем подходе к созданию RESTful API для Joomla для мобильного взаимодействия.

Джо П
источник
1
Я только что видел эти новые расширения в каталоге расширений Joomla, которые могут пригодиться вам: extensions.joomla.org/extensions/core-enhancements/libraries/…
Лоддер

Ответы:

8

Из моего опыта:

О фреймворке Joomla

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

О структуре ФОФ

Я в настоящее время развиваюсь только с FOF. Довольно удобно, много RAD, автоматическая настройка и т.д .; и код совместим с J2.5 / J3.

Для RESTful API вы можете просто взять пример todo-fof и добавить контроллер с API. Пример:

public function getIndexStatus()
{
    // CSRF prevention
    if ($this->csrfProtection)
    {
        $this->_csrfProtection();
    }

    $message['status'] = true;
    $message['error_message'] = 'Status Ok';

    $message = json_encode($message);
    echo $message;
    flush();

    JFactory::getApplication()->close();

}

Кроме того, вы можете воспользоваться автоматическими представлениями json. Например, представление просмотра (default.php) может генерировать вывод json (просто добавив default_json.phpи echo json_encode...)

Анибал
источник
1
Насколько я понимаю, единственная проблема с FOF заключается в том, что он больше не поддерживается разработчиком в ядре Joomla… хотя я понимаю, что версия FOF была переформирована и идет вперед, просто не как часть Joomla?
Крейг,
Вы правы, но это совсем не проблема. FOF Joomla довольно стабильный (я еще не обновил свои расширения). Новый F0F должен быть установлен как новая библиотека (... в конце вы всегда должны установить его в J2.5 ... и программа установки готова для J3). Сейчас 99% исходного кода не изменились.
Анибал
Спасибо за ваши предложения, я согласен, что Joomla Framework довольно сложный, но мне нравится изучать, как его использовать. Я хотел попробовать использовать фреймворк для моего API, поскольку он довольно прост, но не может заставить его вернуть правильный заголовок для JSON. Я начал другой вопрос об этом.
Джо П
6

com_api, безусловно, является хорошим способом создания REST-сервисов для вашего сайта, если само расширение не основано на FOF / RAD. Однако будьте осторожны с несколькими проблемами, если вы планируете создать отдельный экземпляр Joomla только для API

  • Специфичные для домена вещи (например, если вы поддерживаете регистрацию пользователей, тогда в приветственном письме будет ссылка на поддомен API). Это можно смягчить, поиграв с серверной переменной PHP.
  • Точно так же пути к изображениям и т. Д. Должны быть правильными, если вы не используете S3

Кроме того, я уверен, что не должно быть никаких проблем, так как они будут развиваться до тех пор, пока не будет де-факто Joomla способ создания API.

Отказ от ответственности: я поддерживаю https://github.com/techjoomla/com_api

Эшвин Дата
источник
Спасибо за ваш ответ, приятно знать, что вы продолжаете его развивать. Мне нравится, как работает com_api, но я хотел попытаться избежать запуска всей Joomla CMS только для предоставления API. Если я не могу заставить фреймворк работать так, как мне нужно, я определенно буду продолжать использовать это.
Джо П
1

Мои два цента:

Для клиента мне нужно было получить доступ к содержимому его сайта Joomla из приложения для смартфона. Содержимое было помещено в com_content, поэтому изначально я использовал каналы obRSS. Затем я нашел jBackend на JED и попробовал. Это доступно здесь http://www.selfget.com/products/jbackend.html Код кажется очень чистым и поддерживает запросы RESTful и ответы JSON. Электронная документация ограничена, но достаточно понятна для технических специалистов. К сожалению, на данный момент он поддерживает только com_user и com_content, но в моем случае это было нормально. Теперь я должен использовать его для другого клиента, который использует K2 CCK. Я пытаюсь создать собственный плагин для доступа к статьям и категориям K2, но, по крайней мере, я сохраню весь код управления запросами. Я отправил электронное письмо разработчику, и он сказал мне, что он работает над дополнительными модулями, такими как K2 и форум Kunena, это очень многообещающее расширение.

Уайзкид
источник
1

Следующий сайт, кажется, является отличным ресурсом для рекомендаций о том, как создать RESTful JSON API:

http://jsonapi.org/

Что бы это ни стоило, я также запускаю продукт API для Joomla 3.4.x, который называется cAPI http://getcapi.org .

Основным отличием здесь является то, что я поставил свою инфраструктуру маршрутизации на микро-инфраструктуру Slim. Это позволяет мне включить уже опробованную и проверенную надежную среду в экземпляр приложения Joomla. Я также создал архитектуру плагинов для маршрутов обслуживания, открывая двери для надстроек и безопасности веб-служб.

Вы можете найти дополнительную информацию из других постов, здесь:

/programming/26340885/rest-api-for-joomla-3-0/32706378#32706378

Дайте знать, если у вас появятся вопросы.

Стив Циопанос
источник