Skip to content

Repository files navigation

REST API Codegen

Единая среда для создания TypeScript REST API-клиентов: автоматически из OpenAPI или вручную.

Возможности

  • Автоматическое создание. Получите из OpenAPI готовый TypeScript API-клиент с моделями, операциями и HTTP-транспортом.
  • Ручное создание. Пишите операции вручную, используя тот же клиент, а позже заменяйте их сгенерированными.
  • TypeScript из коробки. Модели, параметры запросов и ответы типизированы как для ручных, так и для сгенерированных операций.
  • Гибкий HTTP-клиент. Настройте в одном месте авторизацию, перехватчики, ошибки, повторы и отмену запросов.
  • Патчинг клиента. Исправляйте и добавляйте операции вручную, не изменяя сгенерированные файлы и не ожидая обновления OpenAPI.
  • Клиент как конструктор. Выбирайте методы и транспорт для каждого клиента и создавайте столько клиентов, сколько нужно приложению.
  • Одна операция. Импортируйте только нужную операцию и вызывайте её напрямую, не подключая остальной API.
  • Общий SDK. Вынесите API-клиент в отдельный пакет и используйте его в нескольких приложениях.

Подробнее о возможностях.

Agent skill

Добавьте agent skill, чтобы агент понимал архитектуру REST API Codegen и правильно использовал пакет в проекте.

npx skills add gromlab-ru/rest-api-codegen

Генерация

npx --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

Создание API-клиента

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-спецификацией.

Документация

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages