Как организована работа с новыми API, используются ли Swagger или другие инструменты?
Что проверяют
Как фронтенд у вас узнаёт о новом API: из согласованного контракта или из вкладки Network после того, как бэкенд уже выкатил изменения. Интервьюер смотрит, умеете ли вы работать параллельно с бэкендом и не ловить поломки в проде. Этот же вопрос часто задаёт работодателю кандидат: ответ многое говорит о зрелости команды.
Как отвечать
Опишите процесс по шагам:
- контракт: новый эндпоинт сначала описывается в спецификации OpenAPI 3, и фронт участвует в её ревью. Swagger это прежнее название формата, до версии 2.0 включительно, и набор инструментов вокруг него: Swagger UI для просмотра, Swagger Editor для правки. Подход contract first позволяет обеим сторонам начать одновременно;
- генерация типов и клиента: из спецификации собираются TypeScript-типы через
openapi-typescriptили целый клиент с хуками для TanStack Query черезorval. Ручных интерфейсов для ответов нет, и после перегенерации изменённое поле ломает сборку; - моки: пока бэкенд не готов, ответы отдаёт MSW по примерам из спецификации или мок-сервер, поднятый прямо из OpenAPI. Те же моки идут в тесты и Storybook;
- проверка в рантайме: если бэкенд не всегда держит контракт, ответ на границе с API прогоняют через схему
zod; - контроль изменений: в CI типы перегенерируются и сравниваются с закоммиченными, а
oasdiffловит ломающие изменения спецификации до мержа.
Альтернативы тоже стоит назвать: GraphQL со своей схемой и graphql-codegen, tRPC в TypeScript-монорепозитории, где типы общие без генерации. Если в прошлой команде контракта не было и API изучали по ходу, скажите честно и расскажите, что делали сами: описывали типы по реальным ответам, договаривались о примерах прямо в задаче.
Где спотыкаются
Говорят «у нас был Swagger» и на этом останавливаются. Интервьюеру интересно, как спецификация попадала в код, а не где лежала страница с документацией.
Пишут типы ответов руками и доверяют им. Через пару месяцев они расходятся с реальным API, а TypeScript уверенно проверяет код по устаревшим типам.
Ждут готового бэкенда и только потом начинают фронт. Это растягивает срок фичи, и такой ответ звучит как отсутствие опыта параллельной работы.