intermediate

OpenAPI contracts

Используйте OpenAPI как reviewed contract для documentation, client generation, mocks, validation и contract testing.

OpenAPI (Swagger) описывает HTTP API как machine-readable contract: paths, methods, parameters, request/response schemas, security schemes и examples. Spec — проверенный source of truth, а не постфактумный экспорт.

					paths:
  /orders:
    post:
      operationId: createOrder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrder'
      responses:
        '201':
          description: Created
          headers:
            Location:
              schema: { type: string }
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
				

Применение в lifecycle:

  • **Documentation** (Redoc, Swagger UI) с examples.
  • **Client/server codegen** (types, fetch wrappers) — учитывайте ограничения codegen.
  • **Request validation** middleware из schemas.
  • **Contract tests** и CI на breaking changes (oasdiff, openapi-diff).
  • **Mocks** для параллельной frontend-работы.

На интервью: code-first vs design-first, как не допустить drift spec от implementation, что выносить в components/schemas.

Типовые ошибки: автогенерированный spec без constraints, нет examples, версионирование всего monolith spec без владения, codegen с неверным required/optional.

Компромисс: поддержка spec против боли интеграции — автоматизируйте validation в CI для согласованности spec и кода.

Чеклист:

  • Один проверенный OpenAPI на API surface.
  • Переиспользуемые components/schemas и securitySchemes.
  • Examples на критичных operations.
  • CI падает на непреднамеренные breaking changes.