РСХБ - HTTP
Библиотека для взаимодействия с API проекта Свой Бизнес.
Использование
import { api } from "@rshb/http/api/monolith";
const fetchClients = async () => {
try {
const clientsResponse = await api.clients.clientsList();
} catch (error) {
dispatch(setResponseErrorMessage(error?.error?.errors?.[0]?.message));
}
}
Библиотека учитывает наличие переменных окружения указанных в process.env.API_URL
и process.env.MONOLITH_API_URL
, значение которых используется в качестве параметра baseUrl
в соответствующем HttpClient'е (микросервис / монолит).
Если вам потребовалось использовать отличную от стандартной конфигурацию http-клиента, вы можете импортировать базовый класс Api
для создания собственного экземпляра клиента:
import { Api } from "@rshb/http/api/monolith";
const api = new Api({
baseUrl: "https://custom.base.url.ru"
});
const fetchClients = async () => {
try {
const clientsResponse = await api.clients.clientsList();
} catch (error) {
dispatch(setResponseErrorMessage(error?.error?.errors?.[0]?.message));
}
}
Или изменить параметры запроса в момент совершения вызова:
import { api } from "@rshb/http/api/monolith";
const fetchClients = async () => {
try {
const clientsResponse = await api.clients.clientsList({}, {
baseUrl: "https://custom.base.url.ru"
});
} catch (error) {
dispatch(setResponseErrorMessage(error?.error?.errors?.[0]?.message));
}
}
Генерация API
Для обеспечения типобезопасного взаимодействия с API, мы используем swagger-спецификацию (OpenAPI) версии 2.0 для монолита и версию 3.0 для микросервисов.
Монолит
Для обновления текущей версии API монолита, необходимо обновить содержимое файла спецификации src/api/monolith/swagger.yaml
и выполнить команду генерации API yarn generate-monolith-api
.
Микросервисы
Для обновления текущей версии API микросервиса, необходимо обновить содержимое файла спецификации src/api/<название микросервиса>/swagger.json
и выполнить команду генерации API yarn generate-<название микросервиса>-api
.
Для добавления API нового микросервиса необходимо:
- Создать одноименную директорию микросервиса в
src/api/<название микросервиса>
. - Добавить файл спецификации (OpenAPI) в формате
json
или yaml
. - Добавить скрипт генерации API микросервиса в
package.json
по шаблону generate-<название микросервиса>-api
.
Пример создания скрипта генерации API микросервиса:
"generate-<название микросервиса>-api": "sta -p ./src/api/<название микросервиса>/swagger.json -o ./src/api/<название микросервиса> -n index -t ./src/templates && prettier --write ./src/api/<название микросервиса>"
, где
-p ./src/api/<название микросервиса>/swagger.json
- путь к файлу спецификации API;-o ./src/api/<название микросервиса>
- путь к директории генерируемого файла API;-t ./src/templates
- путь к шаблонам генерации API;-n index
- имя генерируемого файла API.
Устаревший HttpClient
Для обеспечения обратной совместимости существует возможность использования старой версии http-клиента:
import { GET } from "@rshb/http/client/deprecated";
const fetchClients = async () => {
try {
const clientsResponse = await GET("/clients");
} catch (error) {
console.log(error);
}
}
Данный http-клиент является устаревшим и не должен использоваться в новых проектах. После миграции проектов на новую версию, данный клиент будет удален.