詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs
前言
在前面的博客中,我們將服務(wù)注冊(cè)到了Eureka上,可以從Eureka的UI界面中,看到有哪些服務(wù)已經(jīng)注冊(cè)到了Eureka Server上,但是,如果我們想查看當(dāng)前服務(wù)提供了哪些RESTful接口方法的話(huà),就無(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)建在線(xiàn)API文檔的代碼詳解
- swagger2隱藏在API文檔顯示某些參數(shù)的操作
- SpringBoot2.7?WebSecurityConfigurerAdapter類(lèi)過(guò)期配置
- springboot2+es7使用RestHighLevelClient的示例代碼
- 淺談Springboot2.0防止XSS攻擊的幾種方式
- Spring Boot2配置Swagger2生成API接口文檔詳情
相關(guān)文章
springboot使用dubbo和zookeeper代碼實(shí)例
這篇文章主要介紹了springboot使用dubbo和zookeeper代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11spring boot 集成 shiro 自定義密碼驗(yàn)證 自定義freemarker標(biāo)簽根據(jù)權(quán)限渲染不同頁(yè)面(推薦
這篇文章主要介紹了spring-boot 集成 shiro 自定義密碼驗(yàn)證 自定義freemarker標(biāo)簽根據(jù)權(quán)限渲染不同頁(yè)面,需要的朋友可以參考下2018-12-12關(guān)于解決雪花算法生成的ID傳輸前端后精度丟失問(wèn)題
這篇文章主要介紹了關(guān)于解決雪花算法生成的ID傳輸前端后精度丟失問(wèn)題,雪花算法生成的ID傳輸?shù)角岸藭r(shí),會(huì)出現(xiàn)后三位精度丟失,本文提供了解決思路,需要的朋友可以參考下2023-03-03Java后臺(tái)實(shí)現(xiàn)微信支付和微信退款
這篇文章主要介紹了Java后臺(tái)實(shí)現(xiàn)微信支付和微信退款,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Java使用FileInputStream流讀取文件示例詳解
這篇文章主要介紹了Java使用FileInputStream流讀取文件示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Java Date類(lèi)常用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在JDK1.0中,Date類(lèi)是唯一的一個(gè)代表時(shí)間的類(lèi),但是由于Date類(lèi)不便于實(shí)現(xiàn)國(guó)際化,所以從JDK1.1版本開(kāi)始,推薦使用Calendar類(lèi)進(jìn)行時(shí)間和日期處理。這里簡(jiǎn)單介紹一下Date類(lèi)的使用,需要的朋友可以參考下2017-05-05