Swagger/OpenAPI генерация для Java: лучшие библиотеки

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Swagger/OpenAPI генерация для Java: полное руководство по инструментам

В современной Java-разработке создание качественной документации API стало неотъемлемой частью процесса. Спецификация OpenAPI (ранее известная как Swagger) предоставляет стандартизированный формат для описания RESTful API. В этой статье мы рассмотрим основные инструменты для генерации Swagger/OpenAPI документации в Java-проектах, их особенности и примеры использования.

Что такое Swagger и OpenAPI?

Swagger — это набор инструментов для проектирования, создания и документирования REST API. OpenAPI — это спецификация, которая определяет стандарт описания API. Swagger является самой популярной реализацией этой спецификации.

Основные библиотеки для Java

Рассмотрим три ключевых инструмента:

  • SpringDoc OpenAPI — современная библиотека для Spring Boot
  • Swagger Core — базовая библиотека от создателей Swagger
  • OpenAPI Generator — инструмент для генерации кода и документации

1. SpringDoc OpenAPI

SpringDoc — это наиболее популярный выбор для проектов на Spring Boot. Он автоматически интегрируется с вашим приложением и генерирует документацию на основе аннотаций и типов данных.

Установка и настройка

Добавьте зависимость в pom.xml:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.6.0</version>
</dependency>

Пример использования

Создайте простой контроллер с документацией:

@RestController
@RequestMapping("/api/users")
@Tag(name = "Пользователи", description = "Управление пользователями")
public class UserController {

    @GetMapping("/{id}")
    @Operation(summary = "Получить пользователя по ID")
    public ResponseEntity<User> getUser(
            @Parameter(description = "ID пользователя")
            @PathVariable Long id) {
        // реализация
        return ResponseEntity.ok(new User(id, "Иван"));
    }

    @PostMapping
    @Operation(summary = "Создать нового пользователя")
    public ResponseEntity<User> createUser(
            @RequestBody @Valid CreateUserRequest request) {
        // реализация
        return ResponseEntity.status(201).body(new User(1L, request.getName()));
    }
}

После запуска приложения документация будет доступна по адресу http://localhost:8080/swagger-ui.html.

2. Swagger Core

Библиотека Swagger Core предоставляет более низкоуровневый подход к созданию спецификации OpenAPI. Она подходит для проектов, где требуется полный контроль над генерацией.

Пример создания спецификации вручную

import io.swagger.v3.oas.models.*;
import io.swagger.v3.oas.models.info.*;

OpenAPI openAPI = new OpenAPI()
    .info(new Info()
        .title("Pet Store API")
        .description("API для управления питомцами")
        .version("1.0.0")
        .contact(new Contact()
            .name("Разработчик")
            .email("dev@example.com")))
    .addServersItem(new Server()
        .url("https://api.example.com/v1")
        .description("Production сервер"));

// Добавление путей и компонентов
Paths paths = new Paths();
paths.addPathItem("/pets", new PathItem()
    .get(new Operation()
        .operationId("listPets")
        .summary("Получить список питомцев")));
openAPI.setPaths(paths);

3. OpenAPI Generator

OpenAPI Generator — это инструмент, который может генерировать как документацию, так и клиентский/серверный код на основе спецификации OpenAPI.

Использование в Maven

Добавьте плагин в pom.xml:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>7.6.0</version>
    <executions>
        <execution>
            <goals><goal>generate</goal></goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
                <generatorName>spring</generatorName>
                <output>${project.build.directory}/generated-sources</output>
            </configuration>
        </execution>
    </executions>
</plugin>

Сравнение инструментов

  • SpringDoc — лучший выбор для Spring Boot проектов, минимальная настройка
  • Swagger Core — подходит для не-Spring приложений и кастомной генерации
  • OpenAPI Generator — иде

Рекомендаций