Как создать 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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.