---
pkg: "@nocobase/plugin-data-source-rest-api"
---


# Источник данных REST API

## Введение

Этот плагин позволяет беспрепятственно интегрировать данные из источников REST API.

## Установка

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

![20240323162741](https://static-docs.nocobase.com/20240323162741.png)

## Добавление источника REST API

После активации плагина вы можете добавить источник REST API, выбрав его из выпадающего меню «Добавить новый» в разделе управления источниками данных.

![20240721171420](https://static-docs.nocobase.com/20240721171420.png)

Настройте источник REST API.

![20240721171507](https://static-docs.nocobase.com/20240721171507.png)

## Добавление коллекции

В NocoBase ресурс RESTful сопоставляется с коллекцией, например, с ресурсом Users.

```bash
GET /users
POST /users
GET /users/1
PUT /users/1
DELETE /users/1
```

Эти конечные точки API сопоставляются в NocoBase следующим образом:

```bash
GET /users:list
POST /users:create
POST /users:get?filterByTk=1
POST /users:update?filterByTk=1
POST /users:destroy?filterByTk=1
```

Полное руководство по спецификациям дизайна NocoBase API вы найдете в документации по API.

![20240716213344](https://static-docs.nocobase.com/20240716213344.png)

Ознакомьтесь с главой «NocoBase API - Core» для получения подробной информации.

![20240716213258](https://static-docs.nocobase.com/20240716213258.png)

Конфигурация коллекции для источника данных REST API включает следующее:

### List

Настройте сопоставление интерфейса для просмотра списка ресурсов.

![20240716211351](https://static-docs.nocobase.com/20240716211351.png)

### Get

Настройте сопоставление интерфейса для просмотра деталей ресурса.

![20240716211532](https://static-docs.nocobase.com/20240716211532.png)

### Create

Настройте сопоставление интерфейса для создания ресурса.

![20240716211634](https://static-docs.nocobase.com/20240716211634.png)

### Update

Настройте сопоставление интерфейса для обновления ресурса.
![20240716211733](https://static-docs.nocobase.com/20240716211733.png)

### Destroy

Настройте сопоставление интерфейса для удаления ресурса.

![20240716211808](https://static-docs.nocobase.com/20240716211808.png)

Интерфейсы List и Get являются обязательными для настройки.

## Отладка API

### Интеграция параметров запроса

Пример: Настройте параметры пагинации для интерфейса List. Если сторонний API не поддерживает пагинацию изначально, NocoBase будет выполнять пагинацию на основе полученных данных списка.

![20241121205229](https://static-docs.nocobase.com/20241121205229.png)

Обратите внимание, что будут действовать только переменные, добавленные в интерфейсе.

| Название параметра стороннего API | Параметр NocoBase               |
| -------------------------------- | ------------------------------- |
| page                             | {{request.params.page}}         |
| limit                            | {{request.params.pageSize}}     |

Вы можете нажать «Попробовать» (Try it out), чтобы отладить и просмотреть ответ.

![20241121210320](https://static-docs.nocobase.com/20241121210320.png)

<video width="100%" height="440" controls>
      <source src="https://static-docs.nocobase.com/20241121211034.mp4" type="video/mp4">
</video>

### Преобразование формата ответа

Формат ответа стороннего API может не соответствовать стандарту NocoBase, и его необходимо преобразовать, прежде чем он сможет корректно отображаться во внешнем интерфейсе.

![20241121214638](https://static-docs.nocobase.com/20241121214638.png)

Настройте правила преобразования в соответствии с форматом ответа стороннего API, чтобы обеспечить соответствие выходных данных стандарту NocoBase.

![20241121215100](https://static-docs.nocobase.com/20241121215100.png)

Описание процесса отладки

![20240717110051](https://static-docs.nocobase.com/20240717110051.png)

## Переменные

Источник данных REST API поддерживает три типа переменных для интеграции API:

- Пользовательские переменные источника данных
- Переменные запроса NocoBase
- Переменные ответа стороннего сервиса

### Пользовательские переменные источника данных

![20240716221937](https://static-docs.nocobase.com/20240716221937.png)

![20240716221858](https://static-docs.nocobase.com/20240716221858.png)

### Запрос NocoBase

- Params: Параметры запроса URL (Search Params), которые различаются в зависимости от интерфейса.
- Headers: Пользовательские заголовки запроса, в основном предоставляющие специфическую X-информацию от NocoBase.
- Body: Тело запроса.
- Token: Токен API для текущего запроса NocoBase.

![20240716222042](https://static-docs.nocobase.com/20240716222042.png)

### Ответы сторонних сервисов

В настоящее время доступно только тело ответа.

![20240716222303](https://static-docs.nocobase.com/20240716222303.png)

Ниже приведены переменные, доступные для каждого интерфейса:

### List

| Параметр                | Описание                                                     |
| ----------------------- | ------------------------------------------------------------ |
| `request.params.page`     | Текущая страница                                             |
| `request.params.pageSize` | Количество элементов на странице                             |
| `request.params.filter`   | Критерии фильтрации (должны соответствовать формату фильтра NocoBase) |
| `request.params.sort`     | Критерии сортировки (должны соответствовать формату сортировки NocoBase) |
| `request.params.appends`  | Поля для загрузки по требованию, обычно для полей связей     |
| `request.params.fields`   | Поля для включения (белый список)                            |
| `request.params.except`   | Поля для исключения (черный список)                          |

### Get

| Параметр                  | Описание                                                     |
| ------------------------- | ------------------------------------------------------------ |
| `request.params.filterByTk` | Обязательно, обычно это ID текущей записи                    |
| `request.params.filter`     | Критерии фильтрации (должны соответствовать формату фильтра NocoBase) |
| `request.params.appends`    | Поля для загрузки по требованию, обычно для полей связей     |
| `request.params.fields`     | Поля для включения (белый список)                            |
| `request.params.except`     | Поля для исключения (черный список)                          |

### Create

| Параметр                 | Описание                       |
| ------------------------ | ------------------------------ |
| `request.params.whiteList` | Белый список                   |
| `request.params.blacklist` | Черный список                  |
| `request.body`             | Исходные данные для создания   |

### Update

| Параметр                  | Описание                                                     |
| ------------------------- | ------------------------------------------------------------ |
| `request.params.filterByTk` | Обязательно, обычно это ID текущей записи                    |
| `request.params.filter`     | Критерии фильтрации (должны соответствовать формату фильтра NocoBase) |
| `request.params.whiteList`  | Белый список                                                 |
| `request.params.blacklist`  | Черный список                                                |
| `request.body`              | Данные для обновления                                        |

### Destroy

| Параметр                  | Описание                                                     |
| ------------------------- | ------------------------------------------------------------ |
| `request.params.filterByTk` | Обязательно, обычно это ID текущей записи                    |
| `request.params.filter`     | Критерии фильтрации (должны соответствовать формату фильтра NocoBase) |

## Настройка полей

Метаданные полей (Fields) извлекаются из данных CRUD-интерфейса адаптированного ресурса и используются в качестве полей коллекции.

![20240716223636](https://static-docs.nocobase.com/20240716223636.png)

Извлечение метаданных полей.

![20241121230436](https://static-docs.nocobase.com/20241121230436.png)

Поля и предварительный просмотр.

![20240716224403](https://static-docs.nocobase.com/20240716224403.png)

Редактирование полей (аналогично другим источникам данных).

![20240716224704](https://static-docs.nocobase.com/20240716224704.png)

## Добавление блоков источника данных REST API

После настройки коллекции вы можете добавлять блоки в интерфейс.

![20240716225120](https://static-docs.nocobase.com/20240716225120.png)