7.9 KiB
Эндпоинты, с которыми взаимодействует rfi-frontend
Документ описывает все HTTP-эндпоинты внешних сервисов, к которым обращается модуль (микрофронтенд rfi-frontend).
Как устроено взаимодействие
Все запросы собраны в реестре module/api/index.ts и сгруппированы по объектам-«API»: RfiAPI, AttachmentsAPI, CoreAPI, ResourcesAPI и функция getAttributes. Каждый вызов идёт через единый httpService (module/api/http-service.ts), созданный фабрикой createHttpService из @sarex-team/sdk-js (поверх axios).
Вызов задаётся объектом:
service— логическое имя сервиса (см. таблицу хостов ниже);url— путь запроса (дописывается к базовому хосту сервиса);data— тело запроса (для POST/PUT/PATCH);axiosConfig— доп. настройки axios, чаще всегоparams(query-параметры:limit,offset,company_idи т.п.);showErrorNotification— показывать ли уведомление об ошибке;controller—AbortControllerдля отмены запроса.
Методы httpService: getRequest, postRequest, putRequest, patchRequest, deleteRequest. Базовый хост подставляется по service из module/api/hosts.ts в зависимости от BUILD_ENV.
Базовые хосты по сервисам и окружениям
Значения из module/api/hosts.ts. Итоговый URL = <базовый хост сервиса> + url. Использовано пять сервисов (остальные ключи в hosts.ts объявлены, но модулем не вызываются).
Сервис (service) |
Назначение | stage |
prod |
|---|---|---|---|
rfi |
Собственный backend RFI (этот сервис) | https://stage-api.sarex.io/rfi/api/v1 |
https://api.sarex.io/rfi/api/v1 |
sarexApi |
Gateway/API Sarex (attachments, users v2) | https://stage-api.sarex.io |
https://api.sarex.io |
sarex |
Локальный backend Sarex (/api/core, /api/client) |
https://stage.sarex.io |
https://lk.sarex.io |
gateway_api_v1 |
Gateway API v1 (resources) | https://stage-api.sarex.io/gateway/api/v1 |
https://api.sarex.io/gateway/api/v1 |
eav_api_v0 |
EAV — сервис атрибутов/схем | https://stage-api.sarex.io/eav/api/v0 |
https://api.sarex.io/eav/api/v0 |
Также определены окружения
local,preprodиcontour. Вlocalсервисsarexпроксируется на/sarex-backend; вcontourиспользуются относительные пути. Подключаемый удалённый модуль documentations описан отдельно вmodule/api/module-hosts.ts(Module FederationremoteEntry.js).
Эндпоинты по сервисам
rfi — Backend RFI (этот сервис)
RfiAPI из module/api/index.ts. Пути указаны относительно базы .../rfi/api/v1.
Метод (RfiAPI) |
HTTP | Путь | Назначение |
|---|---|---|---|
getRfi |
POST | /rfi/filter/ |
Список RFI по фильтру (query limit/offset, тело — фильтры) |
postRfi |
POST | /rfi/ |
Создать RFI |
putRfi |
PUT | /rfi/{rfiId}/ |
Полное обновление RFI |
patchRfi |
PATCH | /rfi/{rfiId}/ |
Частичное обновление RFI |
copyRfi |
POST | /rfi/{rfiId}/copy/ |
Скопировать RFI (тело { name }) |
getRfiById |
GET | /rfi/{id}/ |
RFI по id |
deleteRfi |
DELETE | /rfi/{id}/ |
Удалить RFI (soft-delete) |
getHistory |
GET | /rfi/history/ |
История изменений по списку RFI (query-параметры фильтра) |
getStatusCount |
POST | /rfi/status-count/ |
Количество RFI по статусам (по resource_id) |
getPriorityCount |
POST | /rfi/priority-count/ |
Количество RFI по приоритетам (по resource_id) |
createRfiMessage |
POST | /messages/ |
Создать сообщение в RFI |
getMessagesByRfiId |
GET | /messages/?request_id={id} |
Сообщения по id запроса |
patchRfiMessage |
PATCH | /messages/{id}/ |
Отметить сообщение решением (is_solution) |
getStatuses |
GET | /statuses/ |
Список статусов (query company_id, limit, offset) |
getStatusModels |
GET | /status-models/ |
Модели статусов компании (query company_id) |
getPriorities |
GET | /priorities/ |
Список приоритетов (query company_id, limit, offset) |
getPriorityModels |
GET | /priority-models/ |
Модели приоритетов компании (query company_id) |
sarexApi — Gateway/API Sarex
AttachmentsAPI и CoreAPI.getUsersV2. Пути указаны относительно базы https://(stage-)api.sarex.io.
| Метод | HTTP | Путь | Назначение |
|---|---|---|---|
AttachmentsAPI.uploadFiles |
POST | /gateway/api/v1/attachments/ |
Загрузить файлы (multipart/form-data) |
AttachmentsAPI.deleteFile |
DELETE | /gateway/api/v1/attachments/{id} |
Удалить файл |
AttachmentsAPI.getFilesByRfiId |
GET | /gateway/api/v1/attachments/?company_id={companyId}&instance_id={rfiId}&model_name={ATTACHMENTS_MODEL_NAME} |
Файлы, привязанные к RFI |
CoreAPI.getUsersV2 |
GET | /gateway/api/v2/users/ |
Пользователи (query company_id, permissions, resource_id, limit, offset) |
sarex — Backend Sarex
CoreAPI. Пути указаны относительно базы https://stage.sarex.io / https://lk.sarex.io.
| Метод | HTTP | Путь | Назначение |
|---|---|---|---|
CoreAPI.getUsers |
GET | /api/core/users/ |
Пользователи (query company, perm, resource_id, limit, offset) |
CoreAPI.getDepartments |
GET | /api/core/admin/departments/?company={companyId}&{query} |
Отделы компании |
CoreAPI.getPositions |
GET | /api/core/admin/positions/?company={companyId}&{query} |
Должности компании |
CoreAPI.getSettings |
GET | /api/client/settings/ |
Клиентские настройки |
gateway_api_v1 — Gateway API v1
ResourcesAPI. База уже включает /gateway/api/v1.
| Метод | HTTP | Путь | Назначение |
|---|---|---|---|
ResourcesAPI.getResources |
GET | /resources/ |
Список ресурсов (query company_id) |
eav_api_v0 — EAV (атрибуты)
Функция getAttributes. База уже включает /eav/api/v0.
| Метод | HTTP | Путь | Назначение |
|---|---|---|---|
getAttributes |
GET | /schema/?model_name=flow&company_id={companyId} |
Схема атрибутов по компании |
Обработка ошибок
Ошибки обрабатываются в httpService (@sarex-team/sdk-js). Тип ответа с ошибкой описан в module/api/types.ts (ErrorResponse — { response?.data?.detail }). Часть запросов включает показ уведомления об ошибке флагом showErrorNotification: true (например getSettings, AttachmentsAPI.*). Права доступа (core.can_*_RFI) описаны в module/api/permissions.ts и проверяются на стороне backend RFI (RFITokenBasedPermission).