Як побудувати 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.