[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-arkhitektura-prilozheniy-chto-takoe-api-first-podkhod":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},137,"chto-takoe-api-first-podkhod",3,"arkhitektura-prilozheniy","Архитектура приложений","🏗️","Что такое API-first подход?","API-first -- подход к разработке, при котором API проектируется и описывается до написания кода реализации. API становится контрактом между командами (backend, frontend, мобильные приложения, внешние системы). Это как сначала согласовать чертёж дома со всеми подрядчиками, а потом уже строить.\n\n### Порядок работы\n\n```\n1. Проектирование API (OpenAPI \u002F Swagger спецификация)\n        │\n        ▼\n2. Обсуждение и согласование контракта между командами\n        │\n        ▼\n3. Генерация кода (контроллеры, клиенты, DTO)\n        │\n        ▼\n4. Параллельная разработка:\n   Backend реализует API    |    Frontend использует mock API\n        │                              │\n        ▼                              ▼\n5. Интеграция и тестирование\n```\n\n### Пример OpenAPI-спецификации\n\n\u003Cdetails>\u003Csummary>Пример кода\u003C\u002Fsummary>\n\n```yaml\nopenapi: 3.0.3\ninfo:\n  title: Payment API\n  version: 1.0.0\npaths:\n  \u002Fapi\u002Fv1\u002Fpayments:\n    post:\n      summary: Создать платёж\n      operationId: createPayment\n      requestBody:\n        required: true\n        content:\n          application\u002Fjson:\n            schema:\n              $ref: '#\u002Fcomponents\u002Fschemas\u002FCreatePaymentRequest'\n      responses:\n        '201':\n          description: Платёж создан\n          content:\n            application\u002Fjson:\n              schema:\n                $ref: '#\u002Fcomponents\u002Fschemas\u002FPaymentResponse'\n        '400':\n          description: Некорректный запрос\n        '409':\n          description: Дублирование (идемпотентность)\ncomponents:\n  schemas:\n    CreatePaymentRequest:\n      type: object\n      required: [payerAccountId, payeeAccountId, amount, currency]\n      properties:\n        payerAccountId:\n          type: integer\n          format: int64\n        payeeAccountId:\n          type: integer\n          format: int64\n        amount:\n          type: number\n          format: decimal\n        currency:\n          type: string\n          enum: [RUB, USD, EUR]\n```\n\n\u003C\u002Fdetails>\n\n### Инструменты\n\n- **OpenAPI Generator** -- генерация серверного и клиентского кода из спецификации.\n- **Swagger UI** -- интерактивная документация API, позволяющая отправлять запросы из браузера.\n- **Spring Cloud Contract** -- contract testing между микросервисами.\n- **Prism** -- mock-сервер по спецификации для параллельной разработки frontend.\n\n### Плюсы и минусы\n\n| Аспект | API-first | Code-first |\n|--------|-----------|------------|\n| Контракт | Определён до кода | Генерируется из кода |\n| Параллельная разработка | Возможна сразу | Frontend ждёт backend |\n| Источник правды | Спецификация | Код |\n| Начальные усилия | Больше (проектирование) | Меньше (сразу код) |\n| Согласованность | Высокая | Зависит от дисциплины |\n| Автогенерация | Код из спецификации | Спецификация из кода |\n\n### Итог\n\nAPI-first особенно ценен в проектах с множеством интегрируемых систем, где чёткий контракт критически важен. Подход снижает количество интеграционных багов и ускоряет параллельную разработку.\n\n> **На собеседовании:** Интервьюер хочет услышать понимание разницы между API-first и code-first, а также конкретные инструменты (OpenAPI Generator, Swagger). Частая ошибка -- путать API-first с простым наличием Swagger-документации.","","middle",[15,16,17,18,19],"openapi","design","api","swagger","architecture",[],null,{"title":23,"description":24,"ogTitle":23,"ogDescription":25,"keywords":26,"schemaAnswer":34,"featuredSnippetReady":35},"API-first подход: проектирование API до реализации — Gymterview","Что такое API-first подход? Проектирование API с OpenAPI\u002FSwagger до написания кода. Порядок работы, инструменты, плюсы и минусы для Java-разработчиков.","Разбор API-first подхода: проектирование контракта API до написания кода, OpenAPI-спецификация и автогенерация.",[27,28,29,30,31,32,33],"API-first","OpenAPI","Swagger","проектирование API","контракт API","Spring Cloud Contract","code generation","API-first — подход к разработке, при котором API проектируется и описывается (обычно в формате OpenAPI\u002FSwagger) до написания кода реализации. API становится контрактом между командами, что позволяет вести параллельную разработку frontend и backend. Из спецификации автоматически генерируются контроллеры, клиенты, DTO и документация. Инструменты: OpenAPI Generator, Swagger UI, Spring Cloud Contract, Prism.",true]