詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs
前言
在前面的博客中,我們將服務(wù)注冊(cè)到了Eureka上,可以從Eureka的UI界面中,看到有哪些服務(wù)已經(jīng)注冊(cè)到了Eureka Server上,但是,如果我們想查看當(dāng)前服務(wù)提供了哪些RESTful接口方法的話,就無(wú)從獲取了,傳統(tǒng)的方法是梳理一篇服務(wù)的接口文檔來(lái)供開(kāi)發(fā)人員之間來(lái)進(jìn)行交流,這種情況下,很多時(shí)候,會(huì)造成文檔和代碼的不一致性,比如說(shuō)代碼改了,但是接口文檔沒(méi)有改等問(wèn)題,而Swagger2則給我們提供了一套完美的解決方案,下面,我們來(lái)看看Swagger2是如何來(lái)解決問(wèn)題的。
一、引入Swagger2依賴(lài)的jar包
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
二、初始化Swagger2的配置
@Configuration
@EnableSwagger2 // 啟用Swagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {// 創(chuàng)建API基本信息
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.chhliu.jpa"))// 掃描該包下的所有需要在Swagger中展示的API,@ApiIgnore注解標(biāo)注的除外
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {// 創(chuàng)建API的基本信息,這些信息會(huì)在Swagger UI中進(jìn)行顯示
return new ApiInfoBuilder()
.title("Spring Boot中使用Swagger2構(gòu)建RESTful APIs")// API 標(biāo)題
.description("rdcloud-jpa提供的RESTful APIs")// API描述
.contact("chhliu@")// 聯(lián)系人
.version("1.0")// 版本號(hào)
.build();
}
}
注:該配置類(lèi)需要在Application同級(jí)目錄下創(chuàng)建,在項(xiàng)目啟動(dòng)的時(shí)候,就初始化該配置類(lèi)
三、完善API文檔信息
public interface SonarControllerI {
@ApiOperation(value="獲取項(xiàng)目組Sonar對(duì)應(yīng)的Url信息", notes="根據(jù)id獲取項(xiàng)目組Sonar對(duì)應(yīng)的Url信息")// 使用該注解描述接口方法信息
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "SonarUrl表ID", required = true, dataType = "Long", paramType="path")
})// 使用該注解描述方法參數(shù)信息,此處需要注意的是paramType參數(shù),需要配置成path,否則在UI中訪問(wèn)接口方法時(shí),會(huì)報(bào)錯(cuò)
@GetMapping("/get/{id}")
SonarUrl get(@PathVariable Long id);
@ApiOperation(value="獲取項(xiàng)目組Sonar對(duì)應(yīng)的所有Url信息")
@GetMapping("/get/all")
List<SonarUrl> getAll();
}
注:paramType表示參數(shù)的類(lèi)型,可選的值為"path","body","query","header","form"
四、完善返回類(lèi)型信息
@Entity(name = "SONAR_URL")
public class SonarUrl implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@ApiModelProperty(value="主鍵", hidden=false, notes="主鍵,隱藏", required=true, dataType="Long")// 使用該注解描述屬性信息,當(dāng)hidden=true時(shí),該屬性不會(huì)在api中顯示
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ApiModelProperty(value="URL鏈接地址")
@Column(name="URL")
private String url;
@ApiModelProperty(value="項(xiàng)目組")
@Column(name="TEAM")
private String team;
@ApiModelProperty(value="部門(mén)")
@Column(name="DEPARTMENT")
private String department;
……省略getter,setter方法……
}
五、啟動(dòng)應(yīng)用
1、在瀏覽器中輸入:http://localhost:7622/swagger-ui.html
2、結(jié)果如下:

六、API文檔訪問(wèn)與測(cè)試
Swagger除了提供API接口查看的功能外,還提供了調(diào)試測(cè)試功能

測(cè)試結(jié)果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring MVC利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API詳解
- SpringBoot2.1 RESTful API項(xiàng)目腳手架(種子)項(xiàng)目
- SpringBoot結(jié)合Swagger2自動(dòng)生成api文檔的方法
- SpringBoot集成Swagger2構(gòu)建在線API文檔的代碼詳解
- swagger2隱藏在API文檔顯示某些參數(shù)的操作
- SpringBoot2.7?WebSecurityConfigurerAdapter類(lèi)過(guò)期配置
- springboot2+es7使用RestHighLevelClient的示例代碼
- 淺談Springboot2.0防止XSS攻擊的幾種方式
- Spring Boot2配置Swagger2生成API接口文檔詳情
相關(guān)文章
Java使用多線程批次查詢(xún)大量數(shù)據(jù)(Callable返回?cái)?shù)據(jù))方式
今天給大家分享Java使用多線程批次查詢(xún)大量數(shù)據(jù)(Callable返回?cái)?shù)據(jù))方式,多線程有好幾種方式,今天說(shuō)的方式比較好,實(shí)現(xiàn)Callable<> 這種方式能返回查詢(xún)的數(shù)據(jù),加上Future異步獲取方式,查詢(xún)效率大大加快,感興趣的朋友一起看看吧2023-11-11
如何為Spark Application指定不同的JDK版本詳解
這篇文章主要給大家介紹了關(guān)于如何為Spark Application指定不同的JDK版本的相關(guān)資料,文中通過(guò)示例代碼將解決的方法介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來(lái)隨著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
Spring Cloud 網(wǎng)關(guān)服務(wù) zuul 動(dòng)態(tài)路由的實(shí)現(xiàn)方法
網(wǎng)關(guān)服務(wù)是流量的唯一入口。不能隨便停服務(wù)。所以動(dòng)態(tài)路由就顯得尤為必要。這篇文章主要介紹了Spring Cloud 網(wǎng)關(guān)服務(wù) zuul 三 動(dòng)態(tài)路由的相關(guān)知識(shí),需要的朋友可以參考下2019-10-10
RestTemplate如何使用JSON發(fā)送Post請(qǐng)求
這篇文章主要介紹了RestTemplate如何使用JSON發(fā)送Post請(qǐng)求問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別
這篇文章主要為大家詳細(xì)介紹了Windows下Java調(diào)用OCR進(jìn)行圖片識(shí)別,通過(guò)Tesseract-OCR對(duì)圖片進(jìn)行識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
作為程序員必須掌握的Java虛擬機(jī)中的22個(gè)重難點(diǎn)(推薦0
這篇文章主要介紹了Java虛擬機(jī)中22個(gè)重難點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Java 內(nèi)省(Introspector)深入理解
這篇文章主要介紹了Java 內(nèi)省(Introspector)深入理解的相關(guān)資料,需要的朋友可以參考下2017-03-03

