Создать REST API в ATK4?

#php #user-interface #frameworks #atk4

#php #пользовательский интерфейс #фреймворки #atk4

Вопрос:

Только начал возиться с ATK4. Я хотел бы использовать его как в качестве серверного API (если это возможно), так и для создания небольшой CMS на основе тех же данных, с которыми будет работать API. Доступ к API будет осуществляться плагинами браузера, поэтому ATK4 не будет выполнять рендеринг.

Итак, в основном мой вопрос в том, поддерживает ли ATK4 создание собственного REST API или мне придется создавать эту функциональность самостоятельно? Я нашел документы API, но они, похоже, сосредоточены на создании методов API для обслуживания «движка» рендеринга.

В случае, если я должен сделать это сам, каков наилучший способ реализовать это на ATK4? (с точки зрения будущей совместимости).

Спасибо

Ответ №1:

Существует простой способ решить эту проблему и общий способ.

Простой способ так же прост, как это:

 class page_api_article_add extends Page {
    function init(){
         parent::init();
         try {
             $this->add('Model_Article')->set($_POST)->update();
             echo json_encode("OK");
             exit;
         }catch (BaseException $e){
             echo json_encode($e->getMessage());
             exit;
         }
    }
}
  

Более сложное решение состоит в создании следующих элементов:

  • Вам понадобится пользовательский API поверх ApiCLI.
  • Вам понадобится отдельная маршрутизация страницы
  • Внутри API вам нужно будет определить, какие модели доступны через API и какой контроллер следует использовать
  • Контроллер будет реализовывать проверку аргументов и операции над моделями, такие как создание, обновление, удаление, дублирование и т. Д
  • Поддержка аутентификации по ключу
  • Пользовательские исключения

Я реализовал это однажды, но мне нужно будет договориться с моим клиентом, чтобы убедиться, что я могу передать код в atk4-addons.

В настоящее время я бы посоветовал вам идти «простым» путем, пока не будет выпущен общий API.

Комментарии:

1. Спасибо, на данный момент API будет очень легким и простым, но в будущем я ожидаю, что он станет немного больше и сложнее .. так что я с нетерпением жду возможности услышать больше о вашей общей реализации API 🙂

2. Привет, есть какие-нибудь новости об универсальном API ATK4?