Apidog

sprint-ветка api-{n}

Опубликованная документация

main (защищена)

Open API: export-openapi, OAS 3.1

Ноут студента

.env в .gitignore: личный APIDOG_TOKEN, APIDOG_BRANCH_ID — для sprint-ветки

make generate (бэк)

cmd/apidog

oapi-codegen

bun run generate (фронт)

scripts/apidog.ts

@my/openapi CLI

npmNPM Registry
npm

@my/openapi

GitHub GitHub
GoBackend repo
Go

api.gen.go: strict server, models, embedded spec

Contract drift (nightly)

make generate

Compare with code

ReactFrontend repo
TypeScript

src/api/schema.ts

src/api/client.ts

Contract drift (nightly)

bun run generate

Compare with code

OpenAPI repo

@my/openapi: генератор и клиент

Selectel
DockerVPS · Docker Compose
Go

Go API · OapiRequestValidator

Caddy

Google Chrome

Client (браузер)

Правила контракта

  1. Контракт правят только в sprint-ветке Apidog, main защищена, слияние через Merge Request
  2. В main репы попадает только код, сгенерированный из main Apidog: перед мержем PR перегенерировать без APIDOG_BRANCH_ID
  3. Сгенерированный код (api.gen.go, schema.ts) коммитится и руками не правится
  4. Слияние перезаписывает ресурс в main целиком: ревьюер Merge Request сверяет его с текущим main
  5. Генератор и клиент фронта — один пакет @my/openapi, одна версия
  • Наша инфраструктура
  • GitHub
  • Внешние сервисы
  • Рабочее место
  • Пользовательский трафик
  • Пайплайн и внешние системы, пунктир
  • Прочие связи
Merge Request
YAML
JSON
openapi.yaml
openapi.json
commit
commit
типы paths
main
main
release
CLI
createClient
embedded spec
/api/v1/*