Единая среда для создания TypeScript REST API-клиентов: автоматически из OpenAPI или вручную.
- Автоматическое создание. Получите из OpenAPI готовый TypeScript API-клиент с моделями, операциями и HTTP-транспортом.
- Ручное создание. Пишите операции вручную, используя тот же клиент, а позже заменяйте их сгенерированными.
- TypeScript из коробки. Модели, параметры запросов и ответы типизированы как для ручных, так и для сгенерированных операций.
- Гибкий HTTP-клиент. Настройте в одном месте авторизацию, перехватчики, ошибки, повторы и отмену запросов.
- Патчинг клиента. Исправляйте и добавляйте операции вручную, не изменяя сгенерированные файлы и не ожидая обновления OpenAPI.
- Клиент как конструктор. Выбирайте методы и транспорт для каждого клиента и создавайте столько клиентов, сколько нужно приложению.
- Одна операция. Импортируйте только нужную операцию и вызывайте её напрямую, не подключая остальной API.
- Общий SDK. Вынесите API-клиент в отдельный пакет и используйте его в нескольких приложениях.
Добавьте agent skill, чтобы агент понимал архитектуру REST API Codegen и правильно использовал пакет в проекте.
npx skills add gromlab-ru/rest-api-codegennpx --yes @gromlab/rest-api-codegen@5.2.4 \
--input https://petstore.swagger.io/v2/swagger.json \
--output ./src/infra/pet-store-api/generatedВ generated появится результат генерации: типы, операции и HTTP-клиент.
src/
└── infra/
└── pet-store-api/
├── generated/ # создаётся автоматически
├── pet-store-api.ts # API-клиент приложения
└── index.ts
src/infra/pet-store-api/pet-store-api.ts:
import { createApiClient, HttpClient, operationsTree } from "./generated";
// Настраиваем общий HTTP-транспорт.
export const httpClient = new HttpClient({
baseUrl: "https://petstore.swagger.io/v2",
});
// Создаём API-клиент.
export const petStoreApi = createApiClient(httpClient, operationsTree);const pet = await petStoreApi.pets.getPet({ id: "42" });Имена групп, операций и их аргументы определяются OpenAPI-спецификацией.