---
pkg: '@nocobase/plugin-app-supervisor'
title: 'Вызов API дочерних приложений'
description: 'Как вызывать API дочерних приложений в Multi-app: доступ через входное приложение и указание цели через префикс пути, заголовок или query-параметр.'
keywords: 'Multi-app,API дочернего приложения,AppSupervisor,входное приложение,API,NocoBase'
---

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

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

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

```bash
GET /api/users:list
```

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

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

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

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

```bash
GET /api/__app/a_xxx/users:list
```

Где:

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

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

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

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

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

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

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

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

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

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

```bash
GET /api/users:list?__appName=a_xxx
```

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

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

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

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

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

Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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