Документирование API с помощью Swagger на Springboot

RedDeveloper
26.01.2023 09:43
Документирование API с помощью Swagger на Springboot

Введение

В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .

В этой статье мы узнаем, как создать документацию API с помощью Swagger на Springboot, а также протестируем все apis с помощью swagger ui. посмотрите на изображение ниже для простого описания того, что мы создадим.

В этой статье мы узнаем как создать документацию API с помощью Swagger на Springboot аSpringboot + Swagger-UI
В этой статье мы узнаем как создать документацию API с помощью Swagger на Springboot аSwagger-UI home pge

Требования

  • Maven 3+
  • Java 8+
  • IDE (Intelij Idea )
  • Mysql сервер
  • (для тестового пользовательского интерфейса Swagger)

Обзоры

  • Откройте проект Springboot + Mysql
  • Добавьте зависимость и конфигурацию swagger
  • добавьте аннотацию swagger на класс контроллера
  • Протестируйте все Rest API с помощью Swagger UI
  • Полный исходный код здесь

Открытый проект Springboot + Mysql

свяжите проект springboot + Mysql

Добавление зависимостей и конфигурации Swagger

  • шаг 1, откройте файл pom.xml, а затем добавьте зависимости следующим образом
<!-- swagger open api-->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.6.10</version>
        </dependency>
  • шаг 2, откройте файл application.properties, а затем добавьте синтаксис следующим образом.
# for enable the swagger-ui page (default true)
spring.api-docs.enabled=true

# for checking the swagger-ui page on link :  
# http://localhost:8181/swagger-ui/index.html

Добавьте аннотацию swagger на класс контроллера

  • 1, откройте файл UserController.java, а затем добавьте аннотацию swagger на каждую конечную точку следующим образом
    @Operation(summary = "Api save data")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "Success", content = {@Content(mediaType = "application/json")}),
            @ApiResponse(responseCode = "404", description = "Data not found", content = @Content)
    })
    @PostMapping(value = "/save")
    public ResponseEntity<Response> save(@RequestBody UserDTO request) {
        return userService.save(request);
    }
    @Operation(summary = "Api update data")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "Success", content = {@Content(mediaType = "application/json")}),
            @ApiResponse(responseCode = "404", description = "Data not found", content = @Content)
    })
    @PutMapping(value = "/update/{id}")
    public ResponseEntity<Response> update(@PathVariable Long id,
                                           @RequestBody UserDTO request) {
        return userService.update(id, request);
    }
    @Operation(summary = "Api delete data")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "Success", content = {@Content(mediaType = "application/json")}),
            @ApiResponse(responseCode = "404", description = "Data not found", content = @Content)
    })
    @DeleteMapping(value = "/delete/{id}")
    public ResponseEntity<Response> delete(@PathVariable Long id) {
        return userService.delete(id);
    }
    @Operation(summary = "Api delete all data")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "Success", content = {@Content(mediaType = "application/json")}),
            @ApiResponse(responseCode = "404", description = "Data not found", content = @Content)
    })
    @DeleteMapping(value = "/delete/all")
    public ResponseEntity<Response> deleteAll() {
        return userService.deleteAll();
    }
    @Operation(summary = "Api get all data")
    @ApiResponses(value = {
            @ApiResponse(responseCode = "200", description = "Success", content = {@Content(mediaType = "application/json")}),
            @ApiResponse(responseCode = "404", description = "Data not found", content = @Content)
    })
@Operation(summary = "Api find data by id")
@ApiResponses(value = {
        @ApiResponse(responseCode = "200", description = "Success", content = {@Content(mediaType = "application/json")}),
        @ApiResponse(responseCode = "404", description = "Data not found", content = @Content)
})
@GetMapping("/find/{id}")
public ResponseEntity<Response> findById(@PathVariable Long id) {
    return userService.findById(id);
}

Описания аннотаций:

  • Operation используется для описания API конечных точек и будет отображаться в Swagger-UI.
  • ApiResponse используется для определения типа ответа и будет отображаться в Swagger-UI

Запустите приложение Springboot

  • приложение Springboot и убедитесь, что приложение запущено.
Описания аннотаций приложение запущено

Протестируйте все Rest API с помощью Swagger UI

  • шаг 1, откройте swagger-ui в браузере: http://localhost:8181/swagger-ui/index.html
Описания аннотаций Домашняя страница Swagger-UI
  • шаг 2, нажмите на меню аккордеона на каждой конечной точке, пример конечной точки (/api/user/save)
Описания аннотаций аккордеонное меню на UserController
  • шаг 3, нажмите кнопку try it out, введите json тело пользователя и нажмите кнопку execute
Описания аннотацийSwagger-UI вводим json тело пользователя для тестирования и выполняем
  • тест api сохранить пользователя является успешным, вы можете увидеть ответ
Описания аннотацийSwagger-UI ответ тестируемого API

Заключение

Наконец, мы уже научились создавать документацию API с помощью Swagger на Springboot, на примере CRUD api.

Полный исходный код здесь

Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js

21.03.2023 12:23

Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из самых популярных фреймворков для веб-разработки сегодня является React.js. Если вы начинающий веб-разработчик и хотите узнать больше о React.js, это...

Разница между Angular и React
Разница между Angular и React

21.03.2023 07:56

React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые делают их подходящими для различных проектов веб-разработки.

Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit

20.03.2023 14:01

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

Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра

20.03.2023 12:24

Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие действия:

ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023

20.03.2023 11:15

О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц. HTML обеспечивает структуру страницы CSS (визуальное и звуковое) оформление для различных устройств. Наряду с графикой и сценариями HTML и CSS являются...

Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular

20.03.2023 08:46

Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?