API-first розробка: чому контракти важливіші за код
Класична розробка: бекенд пише API, фронт чекає. Через 2 тижні з'ясовується, що поля називаються не так, типи не ті, ендпоінтів не вистачає. Переробка. API-first вирішує це за 1 день дизайну.
Як це працює
- Команда сідає і пише OpenAPI 3.1 specification у YAML — усі ендпоінти, моделі, помилки
- Генеруємо TypeScript-типи для фронту і Pydantic-моделі для бекенду з однієї специфікації
- Фронт працює з mock-сервером (Prism, MSW) з реальними даними
- Бекенд паралельно імплементує — обидва впевнені, що типи збігаються
- Контрактні тести (Pact, Schemathesis) перевіряють, що реалізація не відходить від контракту
Що дає
- Фронт + бекенд працюють паралельно з дня 1, не блокуючи одне одного
- Інтеграційні баги знаходяться на етапі дизайну, не в QA
- Автогенерована документація (Swagger UI, Redoc) — без ручної підтримки
- SDK для клієнтів генерується автоматично (TypeScript, Python, Dart)
- Зміна API = зміна контракту = типи відразу оновлюються — компілятор покаже, що зламалось
Інструменти, які ми використовуємо
- Stoplight Studio — візуальний редактор OpenAPI
- openapi-typescript — генерація TS-типів
- Orval / Kubb — генерація React Query hooks
- Prism — mock-сервер
- Schemathesis — property-based тестування
Розробляємо складні системи з API-first підходом — /services/custom-software.
