什么是Swagger和SpringBoot中整合Swagger的配置是怎樣的

什么是Swagger和SpringBoot中整合Swagger的配置是怎樣的,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作與策劃設(shè)計(jì),桃山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:桃山等地區(qū)。桃山做網(wǎng)站價(jià)格咨詢:18980820575

Swagger介紹

1.什么是Swagger

作為后端程序開發(fā),我們多多少少寫過幾個(gè)后臺(tái)接口項(xiàng)目,不管是編寫手機(jī)端接口,還是目前比較火熱的前后端分離項(xiàng)目,前端與后端都是由不同的工程師進(jìn)行開發(fā),那么這之間的溝通交流通過接口文檔進(jìn)行連接。但往往伴隨很多問題,后端程序員認(rèn)為編寫接口文檔及維護(hù)太花費(fèi)時(shí)間精力,前端的認(rèn)為接口文檔變動(dòng)更新不及時(shí),導(dǎo)致程序之間相互調(diào)用出行問題。那么能簡(jiǎn)化接口文檔的編寫直接自動(dòng)生成嗎?當(dāng)然能!如是乎Swagger這種接口文檔在線自動(dòng)生成工具便孕育而生。

Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來始終保持同步。Swagger 讓部署管理和使用功能強(qiáng)大的API從未如此簡(jiǎn)單。

2.Swagger優(yōu)點(diǎn)

  • 代碼變,文檔變。只需要少量的注解,Swagger 就可以根據(jù)代碼自動(dòng)生成 API 文檔,很好的保證了文檔的時(shí)效性。

  • 跨語言性,支持 40 多種語言。

  • Swagger UI 呈現(xiàn)出來的是一份可交互式的 API 文檔,我們可以直接在文檔頁面嘗試 API 的調(diào)用,省去了準(zhǔn)備復(fù)雜的調(diào)用參數(shù)的過程。

  • 還可以將文檔規(guī)范導(dǎo)入相關(guān)的工具(例如 Postman、SoapUI), 這些工具將會(huì)為我們自動(dòng)地創(chuàng)建自動(dòng)化測(cè)試。

SpringBoot中整合Swagger

1.基礎(chǔ)環(huán)境構(gòu)建

首先搭建一個(gè)基礎(chǔ)的SpringBoot項(xiàng)目,導(dǎo)入以下Swagger啟動(dòng)器

<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<artifactId><version>3.0.0</version></dependency>

編寫一個(gè)用于測(cè)試的controller

// java源碼大全 www.1b23.com@RestControllerpublic class HelloController {@PostMapping(value = "/hello")public String hello(){return "hello";
    }
}

編寫Swagger的配置類

@Configuration@EnableOpenApipublic class SwaggerConfig {
}

運(yùn)行啟動(dòng)輸入地址:http://localhost:8080/swagger-ui/index.html

可以看到Swagger接口文檔頁面,說明基本配置環(huán)境成功!

什么是Swagger和SpringBoot中整合Swagger的配置是怎樣的

注意事項(xiàng):
Swagger3.0版本的地址是http://localhost:8088/swagger-ui/index.html,2.x版本中訪問的地址的為http://localhost:8088/swagger-ui.html

2.配置Swagger

配置Swagger首先需要構(gòu)建其Bean實(shí)例 Docket對(duì)象,在剛剛創(chuàng)建的SwaggerConfig 配置類中創(chuàng)建一個(gè)Docket

// java源碼大全 www.1b23.com@Beanpublic Docket docket(){return new Docket(DocumentationType.OAS_30)
            .apiInfo(apiInfo());
}

Docket(DocumentationType.OAS_30) ,我們這里選擇的參數(shù)是 DocumentationType.OAS_30,這是一個(gè)Swagger實(shí)例的接口文檔版本,我們這里是3.0,所以選擇用 OAS_30,其他的類型還有如下幾種,分別對(duì)應(yīng)著Swagger歷史版本

 public static final DocumentationType SWAGGER_12 = new DocumentationType("swagger", "1.2");public static final DocumentationType SWAGGER_2 = new DocumentationType("swagger", "2.0");public static final DocumentationType OAS_30 = new DocumentationType("openApi", "3.0");

構(gòu)建Docket需要?jiǎng)?chuàng)建 ApiInfo 實(shí)例

// java源碼大全 www.1b23.comprivate ApiInfo apiInfo(){// 作者信息Contact contact = new Contact("TIOXY", "https://www.cnblogs.com/tioxy/", "1369773052@qq.com");return new ApiInfo("Tioxy的接口文檔","項(xiàng)目描述","1.0","https://www.cnblogs.com/tioxy/",
            contact,"Apache 2.0","http://www.apache.org/licenses/LICENSE-2.0",new ArrayList());
}

ApiInfo 主要作用是構(gòu)建我們接口文檔的頁面顯示的基礎(chǔ)信息,展示如下位置

3.配置掃描接口及開關(guān)

構(gòu)建Docket時(shí)通過 select() 方法配置掃描接口。Docket的完整代碼如下:

// java源碼大全 www.1b23.com@Beanpublic Docket docket(Environment environment){// 設(shè)置顯示的Swagger環(huán)境Profiles dev = Profiles.of("dev");// 獲取項(xiàng)目環(huán)境boolean flag = environment.acceptsProfiles(dev);return new Docket(DocumentationType.OAS_30)
            .apiInfo(apiInfo())// 配置Api文檔分組.groupName("TIOXY")// enable()是否啟用Swagger,默認(rèn)是true.enable(flag)
            .select()// RequestHandlerSelectors,配置要掃描接口的方式// basePackage指定要掃描的包// any()掃描所有,項(xiàng)目中的所有接口都會(huì)被掃描到// none()不掃描// withClassAnnotation()掃描類上的注解// withMethodAnnotation()掃描方法上的注解.apis(RequestHandlerSelectors.basePackage("com.tioxy.controller"))// paths()過濾某個(gè)路徑.paths(PathSelectors.any())
            .build();
}
  • groupName("TIOXY"):表示此Docket實(shí)例的名字,也就是接口文檔頁面右上角選擇的實(shí)例名,實(shí)際開發(fā)中我們是多人開發(fā),對(duì)應(yīng)的就是多個(gè)Docket實(shí)例

  • enable(flag)enable()是否啟用Swagger,默認(rèn)是true

我們這里使用的是動(dòng)態(tài)的配置是否啟用Swagger,通過 Environment 來獲取此時(shí)運(yùn)行的項(xiàng)目環(huán)境名稱,如果是 dev,則定義一個(gè)flag,來動(dòng)態(tài)的設(shè)置是否啟用

4.實(shí)體類配置

新建一個(gè)User實(shí)體類

@ApiModel("用戶實(shí)體")public class User {   @ApiModelProperty("用戶名")
   public String username;   @ApiModelProperty("密碼")
   public String password;
}

只要這個(gè)實(shí)體在請(qǐng)求接口的返回值上(即使是泛型),都能映射到實(shí)體項(xiàng)中:

@RequestMapping("/getUser")public User getUser(){   return new User();
}

什么是Swagger和SpringBoot中整合Swagger的配置是怎樣的

5.常用注解

我們也可以在接口上添加注釋說明,方便我們?cè)诮涌谖臋n中解釋說明接口的信息,例如接口的作用、參數(shù)說明等,方便調(diào)用者使用

Swagger注解簡(jiǎn)單說明
@Api(tags = "xxx模塊說明")作用在模塊類上
@ApiOperation("xxx接口說明")作用在接口方法上
@ApiModel("xxxPOJO說明")作用在模型類上:如VO、BO
@ApiModelProperty(value = "xxx屬性說明",hidden = true)作用在類方法和屬性上,hidden設(shè)置為true可以隱藏該屬性
@ApiParam("xxx參數(shù)說明")作用在參數(shù)、方法和字段上,類似@ApiModelProperty

 

看完上述內(nèi)容,你們掌握什么是Swagger和SpringBoot中整合Swagger的配置是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

標(biāo)題名稱:什么是Swagger和SpringBoot中整合Swagger的配置是怎樣的
分享路徑:http://bm7419.com/article34/jjscse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、電子商務(wù)、手機(jī)網(wǎng)站建設(shè)云服務(wù)器、網(wǎng)站內(nèi)鏈、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司