Создание REST API в Битрикс D7 позволяет строить мобильные приложения и интеграции со сторонними сервисами. Рассмотрим как это сделать правильно через роутер и контроллеры.
Регистрация маршрутов
В файле /local/routes.php:
return function(BitrixMainRoutingRoutingConfigurator $routes) {
$routes->prefix('api/v1')->group(function($routes) {
$routes->get('users', [MyApiUserController::class, 'getList']);
$routes->post('users', [MyApiUserController::class, 'create']);
});
};
Создание контроллера
namespace MyApi;
use BitrixMainEngineController;
use BitrixMainEngineActionFilter;
class UserController extends Controller
{
public function configureActions(): array
{
return [
'getList' => [
'prefilters' => [
new ActionFilterAuthentication(),
new ActionFilterHttpMethod(['GET']),
],
],
];
}
public function getListAction(): array
{
return BitrixMainUserTable::getList([
'select' => ['ID', 'NAME', 'EMAIL'],
'filter' => ['=ACTIVE' => 'Y'],
'limit' => 20,
])->fetchAll();
}
}
Авторизация через токен
$token = $_SERVER['HTTP_X_API_TOKEN'] ?? '';
if ($token !== MY_API_TOKEN) {
http_response_code(401);
die(json_encode(['error' => 'Unauthorized']));
}
CORS для фронтенда
header('Access-Control-Allow-Origin: https://your-frontend.ru');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type, X-Api-Token');
Формат ответа
Битрикс автоматически сериализует возвращаемый массив в JSON. Для ручного управления:
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
exit;
