Як побудувати API RESTful за допомогою 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 Framework. Він досить складний, зовсім інший, ніж нинішній API Joomla. Крім того, поточний вихідний код не можна вставити копіюванням, і бібліотеки можуть повернути несподівані результати (виконуються в іншому середовищі). Я зачекаю, поки з'явиться більше коду, і він буде більш прийнятим.

Про рамки FOF

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

Для API RESTful можна просто захопити приклад 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, але я хотів спробувати уникнути запуску всієї CMS Joomla лише для надання 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 forum, це дуже перспективне розширення.


1

Цей веб-сайт здається чудовим ресурсом для вказівки щодо створення API RESTful JSON:

http://jsonapi.org/

Для чого це варто, я також запускаю продукт API для Joomla 3.4.x під назвою cAPI http://getcapi.org .

Основний диференціатор тут полягає в тому, що я поставив мою схему маршрутизації на Slim micro-frame. Це дозволяє мені включити вже випробуваний, надійний фреймворк в екземпляр програми Joomla. Я також створив архітектуру плагінів для службових маршрутів, відкривши двері для надбудов та безпеки веб-служб.

Ви можете знайти додаткову інформацію з інших публікацій тут:

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

Повідомте мене, якщо у вас є питання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.