[Spring Boot] Подробное объяснение проблем группировки интерфейса Swagger и сортировки подразделений.
[Spring Boot] Подробное объяснение проблем группировки интерфейса Swagger и сортировки подразделений.

В современной веб-разработке документация по API стала неотъемлемой частью. Swagger — это широко используемый инструмент документации API, который может помочь нам создавать документацию API, которая легко читается и тестируется. Весной В проекте Boot документацию по API можно легко создать путем интеграции Swagger. В этой статье речь пойдет о Группировке. интерфейса Проблемы Swagger и сегментации, а также обсуждение их применения в реальной разработке.

Введение в Swagger

Swagger — это инструмент документации RESTful API, который может автоматически создавать документацию на основе кода API. Swagger поддерживает несколько языков программирования и платформ, включая Java, Python, PHP и т. д., а также поддерживает несколько форматов вывода, таких как JSON, YAML и XML.

В проекте Spring Boot мы можем генерировать документы API, вводя зависимости Swagger, а затем добавляя соответствующие аннотации в контроллер. Swagger предоставляет веб-интерфейс, в котором вы можете просматривать всю информацию API, включая методы запроса, параметры, коды ответов и т. д.

Группировка интерфейса Swagger

В проектах Spring Boot контроллеры обычно имеют несколько интерфейсов. Эти интерфейсы могут принадлежать разным функциональным модулям или разным версиям, и их необходимо классифицировать и классифицировать. Swagger предоставляет функцию группировки интерфейсов, которая позволяет группировать интерфейсы по разным категориям и отображать их в документе.

Основное использование

В проекте Spring Boot мы можем определить группы интерфейсов с помощью аннотации Swagger @Api. Например:

Язык кода:java
копировать
@RestController
@RequestMapping("/users")
@Api(tags = «Управление пользователями»)
public class UserController {
    // ...
}

В приведенном выше коде аннотация @Api указывает метку контроллера как «Управление пользователями», и эта метка будет использоваться в качестве имени группы интерфейсов.

Расширенное использование

Если контроллер содержит несколько интерфейсов, представление и описание каждого интерфейса можно указать с помощью аннотации @ApiOperation. Например:

Язык кода:java
копировать
@RestController
@RequestMapping("/users")
@Api(tags = «Управление пользователями»)
public class UserController {

    @GetMapping("/{id}")
    @ApiOperation(value = «Получить информацию о пользователе», notes = «Получить информацию о пользователе на основе идентификатора пользователя»)
    public User getUserById(@PathVariable("id") Long id) {
        // ...
    }

    @PostMapping
    @ApiOperation(value = «Создать пользователя», notes = «Создать нового пользователя»)
    public User createUser(@RequestBody User user) {
        // ...
    }

    // ...
}

В приведенном выше коде аннотация @ApiOperation указывает имя и описание каждого интерфейса. Эта информация будет отображаться в документе Swagger.

Сортировка интерфейса Swagger

В документации Swagger,Порядок интерфейсов очень важен. Определяет порядок отображения интерфейса,Для разработчиков и тестировщиков,это очень важно。SwaggerДва типа Метод сортировки интерфейса:Сортировать по имени метода интерфейсаи Сортировать по пути запроса интерфейса。

Сортировать по имени метода интерфейса

По умолчанию Swagger сортирует имена методов интерфейса в алфавитном порядке. Например, в следующем коде метод getUserById будет поставлен в очередь перед методом createUser:

Язык кода:java
копировать
@RestController
@RequestMapping("/users")
@Api(tags = «Управление пользователями»)
public class UserController {

    @GetMapping("/{id}")
    public User getUserById(@PathVariable("id") Long id) {
        // ...
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        // ...
    }

    // ...
}

Сортировать по пути запроса интерфейса

Если вам нужно изменить метод сортировки интерфейса, вы можете настроить правила сортировки, реализовав интерфейс упорядочения Swagger. Например, мы можем выполнить сортировку по пути запроса интерфейса, код следующий:

Язык кода:java
копировать
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo"))
                .paths(PathSelectors.any())
                .build()
                .directModelSubstitute
                (Long.class, Integer.class)
                .apiInfo(apiInfo())
                .tags(new Тег("Управление пользователями", "Интерфейс управления пользователями"))
                .enable(true)
                .groupName("user") // Имя группы интерфейсов
                .order(Ordering.byPath()); // Метод сортировки интерфейса
    }
}

В приведенном выше коде,Мы добавили метод .order(), чтобы указать, как упорядочивается интерфейс. Здесь используется метод Ordering.byPath().,выражать Сортировать по пути запроса интерфейса。

Сегментация интерфейса

Если контроллер содержит большое количество интерфейсов, возможно, его необходимо классифицировать и классифицировать более подробно. Swagger также предоставляет аннотации @ApiOperation и @ApiImplicitParam, которые позволяют более детально разделить интерфейс.

Например, в следующем коде мы используем аннотацию @ApiOperation для указания введения и описания каждого интерфейса, а также аннотацию @ApiImplicitParam для указания имени, типа и описания каждого параметра:

Язык кода:java
копировать
@RestController
@RequestMapping("/users")
@Api(tags = «Управление пользователями»)
public class UserController {

    @GetMapping("/{id}")
    @ApiOperation(value = «Получить информацию о пользователе», notes = «Получить информацию о пользователе на основе идентификатора пользователя»)
    @ApiImplicitParam(name = "id", value = "ID пользователя", required = true, dataType = "Long", paramType = "path")
    public User getUserById(@PathVariable("id") Long id) {
        // ...
    }

    @PostMapping
    @ApiOperation(value = «Создать пользователя», notes = «Создать нового пользователя»)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "user", value = «Пользователь», required = true, dataType = "User", paramType = "body")
    })
    public User createUser(@RequestBody User user) {
        // ...
    }

    // ...
}

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

Подвести итог

Весной В проекте Boot Swagger — очень удобный инструмент документации API. Используя Swagger, мы можем легко создавать документацию по API и реализовывать группировку и сортировку интерфейсов. Группировка и порядок интерфейсов очень важны для читаемости и тестируемости документов API, поэтому нам необходимо сделать разумные настройки, исходя из реальных потребностей. В то же время Сегментация интерфейса – тоже важный вопрос,При написании документации API,Нам необходимо как можно более подробно различать различные интерфейсы и параметры.,Чтобы помочь разработчикам лучше понять и использовать API.

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.