Хаки могут предоставлять новые приложения для работы API или расширять существующие новыми функциями. Перезапись существующих функций в приложениях не поддерживается.
Подготовка файла с API
Файлы с API-функциями размещаются в папке модулей. На каждое "приложение" для API создаётся свой файл. Все функции приложения размещаются в одном файле.
Название файла должно начинаться с api
и названия приложения через дефис, например: api-proxy.php
. Название приложения может содержать только маленькие латинские символы и цифры. Название приложения может начинаться как с буквы, так и с цифры. Запрещается использование заглавных букв и символов, в том числе дефиса и знака подчёркивания.
Особенности создания функций
Все функции, отвечающие за работу API, должны иметь особое название: api_app_func
, где app
- название приложения, а func
- название функции. К названию функции предъявляются те же требования, что и к названию приложения.
Адрес доступа функции формируется из ключевого слова api
, названия приложения и названия самой функции. Через точку указывается формат результата. Например, функция может называться api_proxy_check
, тогда она будет доступна по адресу api/proxy/check.json
.
Важно! Вы не можете создавать функции с именами уже имеющихся системных функций. Переписывание системных API-функций недоступно.
API-функция всегда принимает два параметра - ядро и идентификатор пользователя, который вызвал функцию. Функция должна возвращать массив с результатами выполнения. Рекомендуется использовать в массиве поле status
, которое принимает значение error
в случае ошибки и ok
в случае успешного выполнения. Код ошибки принято отдавать в поле error
.
Пример оформления функции:
function api_proxy_check( $core, $user ) { $uid = (int) $core->get['uid']; if ( $$core->hack->proxyland->check( $uid ) ) { return [ 'status' => 'ok', 'id' => $uid ]; } else return [ 'status' => 'error', 'error' => 'failed' ]; }
Параметр $user
передаётся в функцию даже в том случае, если у неё отключена авторизация. Рекомендуется всегда включать авторизацию для функций.
Подключение функций к системе
Подключение API-приложений к системе выполняется через ключ api
массива инициализации хака. В качестве значения указывается массив строк с названиями приложений. Если ваш файл называется app-proxy.php
, то в качестве значения в массиве указывается proxy
.
Например, приложение proxy
подключается так:
'api' => [ 'proxy' ],
Рекомендуется включать авторизацию для всех создаваемых API-функций. За авторизацию отвечает ключ api-auth
в массиве инициализации хака. На каждое приложение используется свой массив. Первым элементом указывается название приложения. Вторым элементом указывается массив строк с названиями функций. Если функция только одна, можно указать её строкой, а не массивом.
Например, так будет обязательна авторизация для функций check
и add
приложения proxy
и функции getproxy
приложения wm
:
'api-auth' => [ [ 'proxy', [ 'check', 'add' ] ], [ 'wm', 'getproxy' ], ],
Рассмотрим полный пример подключения API в файле start.php
. Мы подключаем новое приложение proxy
, которое содержит функции check
, add
, del
, edit
и list
. Также мы добавляем новую функцию getproxy
в системное приложение wm
. Все функции требуют авторизации.
return [ /* … здесь идут настройки других элементов … */ 'api' => [ 'proxy', 'wm' ], 'api-auth' => [ [ 'proxy', [ 'check', 'add', 'del', 'edit', 'list' ] ], [ 'wm', 'getproxy' ], ], ];