目錄
引入Swagger2 依賴
建立設定檔
首頁 Java java教程 SpringBoot整合Swagger2產生介面文檔,媽媽再也不用擔心我寫API文檔了

SpringBoot整合Swagger2產生介面文檔,媽媽再也不用擔心我寫API文檔了

May 26, 2020 pm 06:36 PM
1

在現在的開發過程中,基本上已經全部採用API 介面的方式進行系統的開發了,於是乎,在此過程中,一個好的API 文件便成為了後台與前台進行溝通與開發的關鍵橋樑。

    傳統的做法是由開發人員創建一份RESTful API 文件來記錄所有的介面細節,說實話,這樣的工作量並不小,而且十分瑣碎,且隨著專案的更新會出現以下問題。

  • 文件難以維護。

  • 介面內容更複雜,寫效率更低。

    Swagger 便是為了解決這個問題,它作為一個規格和完整的框架,可以用來產生、描述、呼叫和視覺化RESTful 風格的Web 服務:

    透過Swagger,我們可以在開發介面的過程中透過使用註解自動產生/更新API 介面文檔,且在文檔頁面支援介面的偵錯。

接下來就簡單說一下,如何在SpringBoot 中整合Swagger2(2 代表其版本)

引入Swagger2 依賴

pom.xml 文件

<dependencies>
        <!--Swagger2 在此,个人推荐使用2.8.0版本,较为稳定-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
</dependencies>
登入後複製

建立設定檔

Swagger2Config.java java 設定檔

@Configuration
// 指定扫描的api包路径
@ComponentScan(basePackages = {"cn.beatree.xxx.controller"})
//注解开启 swagger2 功能
@EnableSwagger2
public class Swagger2Config {
    @Value("${swagger2.enable}")
    boolean enable;
    // 配置文件中通过值注入控制生产环境与开发环境下的启用状态
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(enable)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("ANONVOTE | Swagger API文档")//标题
                .description("description: ANONVOTE | Swagger API文档")//描述
                .contact("BEATREE")//作者信息
                .version("1.0.0")//版本号
                .build();
    }
}
登入後複製

application.yml 設定檔

swagger2:
  enable: false #true 启用
登入後複製

@Configuration 註解,指定為配置類,會在SpringBoot 啟動時進行載入。

@EnableSwagger2 註解來啟用 Swagger2。

成員方法 createRestApi 函數建立 Docket 的 Bean 之後,apiInfo() 用來創建該 Api 的基本資訊(這些基本資訊會展現在文件頁面中)。 select() 函數傳回一個 ApiSelectorBuilder 實例用來控制哪些介面暴露給 Swagger 來展現,本例採用指定掃描的套件路徑來定義,Swagger 會掃描該套件下所有 Controller 定義的 API,並產生文件內容(除了被 @ApiIgnore 指定的請求)。

常用Swagger 註解

@Api:修飾整個類,描述Controller 的作用

@ApiOperation:描述一個類別的一個方法,或者說一個介面

@ApiParam:單一參數描述@ApiModel:用物件來接收參數

@ApiProperty:用物件接收參數時,描述物件的一個欄位

@ApiResponse:HTTP 回應其中1 個描述

@ApiResponses:HTTP 回應整體描述

@ApiIgnore :使用該註解忽略這個API

@ApiError :發生錯誤回傳的訊息

@ApiImplicitParam:描述一個請求參數,可以配置參數的中文意義,也可以為參數設定預設值

@ApiImplicitParams:描述由多個

@ApiImplicitParam# 註解的參數所組成的請求參數清單

舉個栗子

@RestController
@Transactional    // 事务注解,实现回滚
@RequestMapping("/api/tlink")
@Api(value = "/api/tlink", tags = "参与者相关接口")
public class TlinkController{
    @GetMapping("/checkCode/{code}")
    @ApiOperation(value = "投票认证码核验接口",
            notes = "该接口用于核验认证码合法性,对于投票主题内容的获取需后续调用Topic相关接口。返回值data中带有参数 topic & options")
    public JSONObject checkCode(@PathVariable("code") String code){
  ...
 }
}
登入後複製

最後在執行SpringBoot 專案之後,透過伺服器位址/swagger-ui.html 存取即可。

要注意的是,如已新增路徑攔截器,需透過

.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**")
登入後複製

對 swagger 路徑放行。

以上是SpringBoot整合Swagger2產生介面文檔,媽媽再也不用擔心我寫API文檔了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? 如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射? 如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射? Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? 如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)? 如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)? Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

See all articles