最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringDoc和Swagger使用示例詳解

 更新時(shí)間:2025年11月27日 10:12:54   作者:q***1884  
Swagger和Springdoc是兩個(gè)常用的工具,用于生成和維護(hù)API文檔,特別是針對(duì)基于REST的Web服務(wù),這篇文章給大家介紹SpringDoc和Swagger使用示例,感興趣的朋友跟隨小編一起看看吧

SwaggerSpringdoc是兩個(gè)常用的工具,用于生成和維護(hù)API文檔,特別是針對(duì)基于REST的Web服務(wù)。它們有效地提升了API的可讀性和可維護(hù)性,幫助開發(fā)者、產(chǎn)品經(jīng)理和其他利益相關(guān)者更好地理解和使用所提供的API。

注意:Swagger支持springboot2.0但不支持springboot3.0

一、SpringDoc

Springdoc是一個(gè)開源的庫,旨在將Spring Boot項(xiàng)目的RESTful API與OpenAPI 3文檔生成器集成。Springdoc與Spring Boot應(yīng)用無縫集成,并支持包括Swagger UI在內(nèi)的多種用戶界面。

1.添加依賴

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

2.配置代碼

添加一個(gè)配置類,并添加xml配置

配置解釋

springdoc:
  api-docs:
    path: /v3/api-docs
  swagger-ui:
    path: /swagger-ui.html
    operationsSorter: method
    tagsSorter: alpha

(1)springdoc.api-docs.path

屬性路徑:springdoc.api-docs.path

作用: 定義 OpenAPI 文檔的訪問路徑。

默認(rèn)值:/v3/api-docs

示例:

springdoc:
  api-docs:
    path: /v3/api-docs

配置后,API 文檔可以通過http://<host>:<port>/v3/api-docs訪問。

(2)springdoc.swagger-ui.path

  • 屬性路徑:springdoc.swagger-ui.path
  • 作用: 定義 Swagger UI 的訪問路徑。
  • 默認(rèn)值:/swagger-ui.html
  • 示例:
springdoc:
  swagger-ui:
    path: /swagger-ui.html

配置后,Swagger UI 可以通過http://<host>:<port>/swagger-ui.html訪問。

(3)springdoc.swagger-ui.operationsSorter

  • 屬性路徑:springdoc.swagger-ui.operationsSorter
  • 作用: 定義如何對(duì) Swagger UI 中的操作進(jìn)行排序。
  • 可選值:
    • alpha: 按照操作名稱的字母順序排列。
    • method: 按照 HTTP 方法進(jìn)行排序(如 GET, POST, PUT, DELETE)。
  • 示例:
springdoc:
  swagger-ui:
    operationsSorter: method

配置后,操作會(huì)按照 HTTP 方法的順序顯示。

(4)springdoc.swagger-ui.tagsSorter

  • 屬性路徑:springdoc.swagger-ui.tagsSorter
  • 作用: 定義如何對(duì) Swagger UI 中的標(biāo)簽進(jìn)行排序。
  • 可選值:
    • alpha: 按照標(biāo)簽名稱的字母順序排列。
  • 示例:
springdoc:
  swagger-ui:
    tagsSorter: alpha

配置后,標(biāo)簽會(huì)按照字母順序顯示。

(5)springdoc.title

  • 屬性路徑:springdoc.title
  • 作用: 設(shè)置整個(gè) API 文檔的標(biāo)題。
  • 示例:
springdoc:
  title: 用戶管理

配置后,生成的 API 文檔的標(biāo)題會(huì)顯示為“用戶管理”。

使用

package com.ck.framework.common.springdoc.config;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @ClassName SpringDocConfig
 * @Description
 * @Author 
 * @Date 2024/8/28 15:55
 * @Version 1.0
 */
@Configuration
public class SpringDocConfig {
    @Autowired
    private BaseConfig baseConfig;
    @Bean
    public OpenAPI createOpenApi() {
        return new OpenAPI()
                .info(createInfo());
    }
    private Info createInfo() {
        return new Info()
                .contact(createContact())
                .title(baseConfig.getTitle())
                .description(baseConfig.getDescription())
                .version(baseConfig.getVersion());
    }
    private Contact createContact() {
        Contact contact = new Contact();
        contact.name(baseConfig.getContactName());
        contact.url(baseConfig.getContactUrl());
        contact.email(baseConfig.getContactEmail());
        return contact;
    }
}

3.控制器處理

需要再Controller里面加上Tag注解

package com.ck.framework.user.controller;
import com.ck.framework.common.web.bean.Result;
import com.ck.framework.user.entity.PageResult;
import com.ck.framework.user.entity.dto.UserDto;
import com.ck.framework.user.entity.po.UserPo;
import com.ck.framework.user.entity.req.UserListReq;
import com.ck.framework.user.entity.req.UserReq;
import com.ck.framework.user.service.UserService;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * @ClassName UserController
 * @Description
 * @Author 
 * @Date 2024/8/24 0:03
 * @Version 1.0
 */
@RestController
@RequestMapping("/user")
@Tag(name = "用戶管理")
public class UserController {
    @Autowired
    private UserService userService;
    @PostMapping
    public Result<Boolean> addUser(@RequestBody UserReq userReq) {
        UserDto userDto = new UserDto();
        userDto.setName(userReq.getName());
        userDto.setAge(userReq.getAge());
        int num = userService.addUser(userDto);
        if (num > 0) {
            return Result.success(true);
        } else {
            return Result.fail();
        }
    }
    @DeleteMapping("/{id}")
    public Result<Boolean> deleteUser(@RequestBody UserReq userReq) {
        UserDto userDto = new UserDto();
        userDto.setId(userReq.getId());
        int num = userService.delUser(userDto);
        if (num > 0) {
            return Result.success(true);
        } else {
            return Result.fail();
        }
    }
    @GetMapping
    public Result<PageResult<UserPo>> getUserPage(@RequestBody UserListReq userListReq) {
        UserDto userDto = new UserDto();
        userDto.setPageIndex(userListReq.getPageIndex());
        userDto.setPageSize(userListReq.getPageSize());
        PageResult<UserPo> pageResult = userService.getUserPage(userDto);
        return Result.success(pageResult);
    }
}

4.訪問

5.優(yōu)點(diǎn)

  1. 無縫集成:
    • 專為 Spring Boot 設(shè)計(jì),非常容易集成到 Spring Boot 應(yīng)用中。
  2. 減少注解:
    • 可以自動(dòng)解析 Spring MVC 或 Spring WebFlux 控制器,減少了需要添加的注解數(shù)量。
  3. 自動(dòng)化配置:
    • 大量依賴默認(rèn)配置,無需復(fù)雜的手動(dòng)配置,開箱即用。
  4. 支持最新技術(shù):
    • 支持 Spring Boot 2.x 及更高版本,跟進(jìn) Spring 生態(tài)系統(tǒng)的最新發(fā)展。
  5. 豐富的文檔和示例:
    • 提供了良好的文檔和示例,幫助開發(fā)者快速上手。

6.缺點(diǎn)

  1. 局限性:
    • 專門面向 Spring Boot 項(xiàng)目,不適用于其他框架或原生 Spring 項(xiàng)目。
  2. 功能相對(duì)簡單:
    • 相對(duì)于 Swagger 提供的完整工具鏈,Springdoc 的功能相對(duì)單一,主要聚焦于文檔生成。

二、swagger

Swagger是一個(gè)用于生成、描述、調(diào)用和可視化 RESTful Web 服務(wù)的開源框架。它的核心是一個(gè)名為 OpenAPI 規(guī)范的描述性語言。Swagger 是 Java 應(yīng)用程序中常用的工具之一,因?yàn)樗茏詣?dòng)生成 API 文檔,并提供一個(gè)用戶友好的接口來測(cè)試 API。

在 Java 項(xiàng)目中使用 Swagger 通常包括以下步驟:

1. 添加依賴項(xiàng)

首先,你需要在你的項(xiàng)目中添加所需的 Swagger 依賴項(xiàng)。以 Maven 項(xiàng)目為例,在pom.xml文件中添加以下依賴:

    <dependencies>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>

2. 配置 Swagger

添加一個(gè) Swagger 配置類。例如,在 Spring Boot 應(yīng)用程序中,你可以添加以下內(nèi)容:

package com.ck.framework.common.swagger.config;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * @ClassName SwaggerConfig
 * @Description 配置Swagger的類,啟用Swagger并定義API文檔的相關(guān)信息
 * @Author 
 * @Date 2024/8/28 08:31
 * @Version 1.0
 */
@Configuration  // 表示這是一個(gè)配置類
@EnableSwagger2  // 啟用Swagger2
public class SwaggerConfig {
    /**
     * 創(chuàng)建一個(gè)Docket Bean,用于配置Swagger的核心內(nèi)容,包括哪些包中的API需要生成文檔和API的基本信息。
     *
     * @return Docket對(duì)象,用于Swagger的配置
     */
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)  // 指定文檔類型為Swagger2
                .apiInfo(apiInfo())  // 配置API信息
                .select()  // 返回一個(gè)ApiSelectorBuilder實(shí)例,用于控制哪些接口暴露給swagger
                .apis(RequestHandlerSelectors.basePackage("com.ck.framework.common.swagger"))  // 選擇掃描的包名
                .paths(PathSelectors.ant("/*"))  // 選擇哪些路徑的API需要生成文檔
                .build();  // 構(gòu)建Docket實(shí)例
    }
    /**
     * 構(gòu)建API基本信息,用于頁面展示的文檔信息。
     *
     * @return ApiInfo對(duì)象,包含相關(guān)API的描述信息
     */
    public ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("")  // 設(shè)置文檔標(biāo)題
                .description(" 測(cè)試swagger")  // 設(shè)置文檔描述信息
                .contact(new Contact("", "git地址", "zhuchb_0509@163.com"))  // 設(shè)置聯(lián)系人信息
                .version("1.0")  // 設(shè)置文檔版本
                .build();  // 構(gòu)建ApiInfo實(shí)例
    }
}

3. 將注釋添加到控制器中

使用 Swagger 注釋描述注冊(cè)到Controller。例如:

package com.ck.framework.user.controller;
import com.ck.framework.common.web.bean.Result;
import com.ck.framework.user.entity.PageResult;
import com.ck.framework.user.entity.dto.UserDto;
import com.ck.framework.user.entity.po.UserPo;
import com.ck.framework.user.entity.req.UserListReq;
import com.ck.framework.user.entity.req.UserReq;
import com.ck.framework.user.service.UserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * @ClassName UserController
 * @Description
 * @Author 
 * @Date 2024/8/24 0:03
 * @Version 1.0
 */
@RestController
@RequestMapping("/user")
@Api(value = "用戶管理")
public class UserController {
    @Autowired
    private UserService userService;
    @PostMapping
    public Result<Boolean> addUser(@RequestBody UserReq userReq) {
        UserDto userDto = new UserDto();
        userDto.setName(userReq.getName());
        userDto.setAge(userReq.getAge());
        int num = userService.addUser(userDto);
        if (num > 0) {
            return Result.success(true);
        } else {
            return Result.fail();
        }
    }
    @DeleteMapping("/{id}")
    public Result<Boolean> deleteUser(@RequestBody UserReq userReq) {
        UserDto userDto = new UserDto();
        userDto.setId(userReq.getId());
        int num = userService.delUser(userDto);
        if (num > 0) {
            return Result.success(true);
        } else {
            return Result.fail();
        }
    }
    @GetMapping
    public Result<PageResult<UserPo>> getUserPage(@RequestBody UserListReq userListReq) {
        UserDto userDto = new UserDto();
        userDto.setPageIndex(userListReq.getPageIndex());
        userDto.setPageSize(userListReq.getPageSize());
        PageResult<UserPo> pageResult = userService.getUserPage(userDto);
        return Result.success(pageResult);
    }
}

4. 訪問 Swagger UI

啟動(dòng)你的 Spring Boot 應(yīng)用程序后,打開瀏覽器訪問http://localhost:8080/swagger-ui.html,你會(huì)看到自動(dòng)生成的 API 文檔及其用戶界面。

5.優(yōu)點(diǎn)

  1. 工具鏈完備:
    • Swagger 提供了全面的工具,包括 Swagger Editor、Swagger Codegen 和 Swagger UI,這些工具可以涵蓋從開發(fā)到文檔化的各個(gè)環(huán)節(jié)。
  2. 廣泛支持:
    • 被多個(gè)語言和框架廣泛支持,幾乎成為業(yè)界標(biāo)準(zhǔn)。
  3. 豐富的插件和社區(qū)支持:
    • 有大量的插件和擴(kuò)展,可以滿足各種自定義需求。
  4. 可視化交互:
    • Swagger UI 提供了極為友好的界面,允許開發(fā)者甚至非技術(shù)人員進(jìn)行直接的API測(cè)試與調(diào)用。

6.缺點(diǎn)

  1. 集成復(fù)雜:
    • 對(duì)于部分框架或語言,需要較多的配置和集成工作。
  2. 注解依賴:
    • 在某些實(shí)現(xiàn)中,需要開發(fā)者在代碼中添加大量的注解,增加了代碼復(fù)雜性。

到此這篇關(guān)于SpringDoc和Swagger使用示例詳解的文章就介紹到這了,更多相關(guān)SpringDoc和Swagger使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中如何把實(shí)體類轉(zhuǎn)成json格式的字符串

    java中如何把實(shí)體類轉(zhuǎn)成json格式的字符串

    這篇文章主要介紹了java中如何把實(shí)體類轉(zhuǎn)成json格式的字符串問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java SPI機(jī)制原理及代碼實(shí)例

    Java SPI機(jī)制原理及代碼實(shí)例

    這篇文章主要介紹了Java SPI機(jī)制原理及代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java源碼解析CopyOnWriteArrayList的講解

    Java源碼解析CopyOnWriteArrayList的講解

    今天小編就為大家分享一篇關(guān)于Java源碼解析CopyOnWriteArrayList的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • JVM知識(shí)總結(jié)之垃圾收集算法

    JVM知識(shí)總結(jié)之垃圾收集算法

    本博客為讀書筆記,讀的是《深入理解Java虛擬機(jī)》一書,在看這個(gè)書的時(shí)候,最大的一個(gè)感受便是“當(dāng)初怎么就沒有好好學(xué)習(xí)操作系統(tǒng)呢,不然也不會(huì)有這么多看的云里霧里的地方了”,不過那都是過去的事了,學(xué)習(xí)最好的時(shí)刻便是現(xiàn)在,需要的朋友可以參考下
    2021-06-06
  • SpringBoot遇到的坑@Qualifier報(bào)紅的解決

    SpringBoot遇到的坑@Qualifier報(bào)紅的解決

    這篇文章主要介紹了SpringBoot遇到的坑@Qualifier報(bào)紅的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 使用Swagger2實(shí)現(xiàn)自動(dòng)生成RESTful?API文檔

    使用Swagger2實(shí)現(xiàn)自動(dòng)生成RESTful?API文檔

    在開發(fā)?RESTful?API?的過程中,文檔是非常重要的一部分,可以幫助開發(fā)者了解?API?的功能和使用方法,本文將使用Swagger2?實(shí)現(xiàn)自動(dòng)生成?RESTful?API?文檔,需要的可以參考一下
    2023-06-06
  • 關(guān)于SpringMVC對(duì)Restful風(fēng)格的支持詳解

    關(guān)于SpringMVC對(duì)Restful風(fēng)格的支持詳解

    Restful就是一個(gè)資源定位及資源操作的風(fēng)格,不是標(biāo)準(zhǔn)也不是協(xié)議,只是一種風(fēng)格,是對(duì)http協(xié)議的詮釋,下面這篇文章主要給大家介紹了關(guān)于SpringMVC對(duì)Restful風(fēng)格支持的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 軟件開發(fā)七大過程模型

    軟件開發(fā)七大過程模型

    這篇文章主要介紹了Java七大過程模型詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 詳解Java類加載器與雙親委派機(jī)制

    詳解Java類加載器與雙親委派機(jī)制

    這篇文章主要為大家介紹一下Java中的類加載器與雙親委派機(jī)制,文中通過示例為大家進(jìn)行了詳細(xì)的介紹,對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-08-08
  • Idea插件StopCoding的安裝使用教程

    Idea插件StopCoding的安裝使用教程

    這篇文章主要介紹了Idea插件StopCoding的安裝使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論

闵行区| 龙游县| 江西省| 蓬安县| 深水埗区| 临泉县| 新建县| 长垣县| 新津县| 合山市| 永城市| 临泉县| 巴林右旗| 平谷区| 绥阳县| 湖北省| 永春县| 河间市| 汉阴县| 象山县| 教育| 噶尔县| 平江县| 土默特左旗| 乌兰察布市| 健康| 新宁县| 文安县| 通山县| 手机| 新化县| 买车| 金门县| 淳化县| 武强县| 内黄县| 大竹县| 永德县| 延边| 新邵县| 刚察县|