前言
在前面的博客中,我們將服務(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包
1
2
3
4
5
6
7
8
9
10
11
|
<!-- 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的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
@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文檔信息
1
2
3
4
5
6
7
8
9
10
11
12
|
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中訪(fǎng)問(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)型信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
@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文檔訪(fǎng)問(wèn)與測(cè)試
swagger除了提供api接口查看的功能外,還提供了調(diào)試測(cè)試功能
測(cè)試結(jié)果如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:http://blog.csdn.net/liuchuanhong1/article/details/58594045