Документирование API (Swagger/OpenAPI) для веб-приложения

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Документирование API (Swagger/OpenAPI) для веб-приложения
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Документирование API (Swagger/OpenAPI) для веб-приложения

OpenAPI (бывший Swagger) — стандарт описания REST API в формате YAML или JSON. Документация в OpenAPI-формате позволяет автоматически генерировать интерактивный UI (Swagger UI, Redoc), клиентские SDK и серверные заглушки.

OpenAPI 3.1 структура

openapi: 3.1.0
info:
  title: Articles API
  version: 1.0.0
  description: |
    REST API для управления статьями.
    ## Аутентификация
    Bearer token в заголовке `Authorization: Bearer <token>`

servers:
  - url: https://api.example.com/v1
    description: Production
  - url: http://localhost:3000/v1
    description: Development

paths:
  /articles:
    get:
      tags: [Articles]
      summary: Список статей
      operationId: listArticles
      parameters:
        - name: page
          in: query
          schema: { type: integer, default: 1, minimum: 1 }
        - name: limit
          in: query
          schema: { type: integer, default: 20, maximum: 100 }
        - name: status
          in: query
          schema: { type: string, enum: [draft, published, archived] }
      responses:
        '200':
          description: Список статей
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ArticleList' }
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - bearerAuth: []

components:
  schemas:
    Article:
      type: object
      required: [id, title, status, createdAt]
      properties:
        id: { type: string, format: uuid, example: "550e8400-e29b-41d4-a716-446655440000" }
        title: { type: string, maxLength: 200, example: "Заголовок статьи" }
        status: { type: string, enum: [draft, published, archived] }
        createdAt: { type: string, format: date-time }

  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

  responses:
    Unauthorized:
      description: Не авторизован
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'

Code-first vs Design-first

Design-first: сначала пишется OpenAPI YAML, затем реализация. Обеспечивает API-first подход, контракт до начала разработки.

Code-first: аннотации/декораторы в коде генерируют OpenAPI. Удобнее для существующих проектов.

Laravel (PHP) — code-first через dedoc/scramble:

// Автоматически генерирует OpenAPI из роутов и PHPDoc
composer require dedoc/scramble

// В AppServiceProvider
Scramble::configure()
    ->withDocumentTransformer(function (OpenApi $openApi) {
        $openApi->secure(SecurityScheme::http('bearer'));
    });

Node.js — через tsoa или Fastify:

// Fastify + @fastify/swagger
fastify.register(fastifySwagger, {
  openapi: { info: { title: 'API', version: '1.0' } }
});
fastify.register(fastifySwaggerUi, { routePrefix: '/docs' });

fastify.get('/articles', {
  schema: {
    querystring: { type: 'object', properties: { page: { type: 'integer' } } },
    response: { 200: { $ref: 'ArticleList#' } }
  }
}, handler);

Swagger UI vs Redoc

Swagger UI: интерактивный, позволяет тестировать API прямо в браузере. Встраивается как статика или через npm.

Redoc: красивее выглядит для публичной документации, три-панельный layout, без интерактивности.

Можно использовать оба: Redoc для публичной документации, Swagger UI для разработчиков.

Валидация по схеме

OpenAPI-схема используется для валидации входящих запросов:

// Express + express-openapi-validator
app.use(OpenApiValidator.middleware({
  apiSpec: './openapi.yaml',
  validateRequests: true,
  validateResponses: true, // полезно в dev для проверки ответов сервера
}));

Сроки

Написание OpenAPI-спецификации для существующего API (20–30 эндпоинтов): 2–4 дня. Настройка Swagger UI + валидации + генерации SDK: 1 день дополнительно.