Хаки могут предоставлять новые приложения для работы 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' ],
],
];