Вызов API дочерних приложений

App supervisorEnterprise Edition+

В Multi-app у каждого дочернего приложения есть собственные API. При вызове такого API входное приложение должно знать, в какое дочернее приложение направить запрос.

Например, API основного приложения обычно выглядит так:

GET /api/users:list

/api — стандартный префикс API. Его можно изменить через переменную окружения API_BASE_PATH.

Чтобы вызвать такой же API в дочернем приложении, укажите имя дочернего приложения в запросе.

Использовать префикс пути

Используйте префикс /api/__app/<appName>/:

GET /api/__app/a_xxx/users:list

Где:

  • a_xxx — имя дочернего приложения
  • users:list — ресурс и действие
  • /api — базовый путь API текущей системы

Query-параметры добавляются как обычно:

GET /api/__app/a_xxx/users:list?page=1&pageSize=20

Этот способ явный и удобен для единого доступа через входное приложение в мультисреде.

Использовать заголовок запроса

Если вызывающая сторона уже использует фиксированный адрес /api/..., укажите приложение через заголовок X-App:

curl \
  -H "X-App: a_xxx" \
  http://localhost:13003/api/users:list

Подходит для backend-вызовов или frontend-клиентов с централизованными API URL.

Использовать query-параметр

Можно указать приложение параметром __appName:

GET /api/users:list?__appName=a_xxx

С другими параметрами:

GET /api/users:list?__appName=a_xxx&page=1&pageSize=20

Обычно префикс пути или заголовок понятнее, потому что целевое приложение указано явно.

Адрес API в мультисреде

В мультисреде обычно есть входное приложение и несколько сред выполнения.

Пример:

  • Входное приложение: http://localhost:13003
  • Среда выполнения: http://localhost:14000

Рекомендуется вызывать API дочерних приложений через входное приложение:

GET http://localhost:13003/api/__app/a_xxx/users:list

Входное приложение маршрутизирует запрос согласно конфигурации. Если вы точно знаете нужную среду выполнения, можно использовать ее адрес:

GET http://localhost:14000/api/__app/a_xxx/users:list

Собственные домены дочерних приложений

Если у дочернего приложения есть свой домен, его API можно вызывать напрямую:

GET https://app-example.example.com/api/users:list

Если нужен единый доступ через входное приложение, используйте /api/__app/<appName>/....

Аутентификация

Проверка прав при вызове API выполняется целевым дочерним приложением.

Это означает:

  • Нужна сессия или access token, действительные для дочернего приложения
  • Вход в основное приложение не равен автоматически правам API в дочернем приложении

Если в запросе нет действительных данных аутентификации, дочернее приложение вернет ошибку неаутентифицированного или неавторизованного доступа согласно своей конфигурации.