Модуль для организации REST API в проектах на 1С-Битрикс.
Возможности модуля:
- Создание методов API с помощью событий
- Вывод данных в формате json/xml
- Ограничение методов API по HTTP-методам
Планы на будущее:
- Добавление прав доступа с бесконечными ключами
- Добавление OAuth2 протокола
Возможности модуля:
- Создание методов API с помощью событий
- Вывод данных в формате json/xml
- Ограничение методов API по HTTP-методам
Планы на будущее:
- Добавление прав доступа с бесконечными ключами
- Добавление OAuth2 протокола
Модуль обрабатывает адреса вида
https://my_website.ru/rest/method.name |
Чтобы зарегистрировать обработчик, необходимо зарегистрировать обработчик:
<?php $event = \Bitrix\Main\EventManager::getInstance(); $event->addEventHandler("prominado.rest", "onRestMethodBuildDescription", "restServiceDescription"); function restServiceDescription() { return [ "data.get" => [ "allow_methods" => [], "callback" => ["\\Prominado\\Events\\Rest", "dataGet"] ], "data.update" => [ "allow_methods" => ["POST"], "authenticator" => ["\\Prominado\\Events\\Rest", "isAuthorized"], "callback" => ["\\Prominado\\Events\\Rest", "dataUpdate"] ], ]; } |
Указанные выше методы будут доступны по адресам:
https://my_website.ru/rest/data.get |
https://my_website.ru/rest/data.update |
Код обработчика:
<?php namespace Prominado\Events; class Rest { public function dataGet(\Prominado\Rest\Request $request) { $userId = $request->getQuery("id"); if(!$userId) { throw new \Prominado\Rest\RestException("No user_id passed"); } $request->withStatus(200); $request->withHeader("X-Token", "prominado-web-access"); return ["user" => ["NAME" => "Prominado"]]; } public function dataUpdate(\Prominado\Rest\Request $request) { $userId = $request->getQuery("id"); $fields = $request->getQuery("fields"); if(!$userId) { throw new \Prominado\Rest\RestException("No user_id passed"); } if(!$fields) { throw new \Prominado\Rest\RestException("No fields passed"); } $request->withStatus(200); $request->withHeader("X-Token", "prominado-web-access"); return ["user" => ["NAME" => "Prominado"]]; } public function isAuthorized(Request $request) { $server = $request->getServer(); preg_match("/Bearer\s(.*)/", $server["REMOTE_USER"], $matches); if ($matches[1]) { return true; } return false; } } |
Решение предоставляется "как есть". Техническая поддержка по решению не предоставляется.
Пожелания и замечания можно писать на panteleev@prominado.ru, либо пулл-реквестить на гитхабе - https://github.com/Prominado-ru/prominado.rest
Пожелания и замечания можно писать на panteleev@prominado.ru, либо пулл-реквестить на гитхабе - https://github.com/Prominado-ru/prominado.rest