SpringBoot整合Swagger測試api構建

什么是Swagger?

Swagger是什么:THE WORLD’S MOST POPULAR API TOOLING

根據官網的介紹:

Swagger Inspector:測試API和生成OpenAPI的開發工具。Swagger Inspector的建立是為了解決開發者的三個主要目標。

執行簡單的API測試

生成OpenAPI文檔

探索新的API功能

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

我的理解Swagger是一個規范和完整的框架,用于生成、描述、調用和可視化RESTful風格的Web服務。簡單來說,Swagger是一個功能強大的接口管理工具,并且提供了多種編程語言的前后端分離解決方案。根據我的使用,當然我只是最簡單的使用,我感覺Swagger有以下幾個優點:

Swagger可以整合到代碼中,在開發時通過注解,編寫注釋,自動生成API文檔。

將前端后臺分開,不會有過分的依賴。

界面清晰,無論是editor的實時展示還是ui的展示都十分人性化,如果自己僅僅用markdown來編寫,又要糾結該如何展現,十分痛苦。

構建項目

step1.導入依賴

<!--swagger服務api構建個性包-->io.springfoxspringfox-swagger22.6.1<!--swagger ui界面-->io.springfoxspringfox-swagger-ui2.6.1<!--springboot web服務-->org.springframework.bootspring-boot-starter-web<!--springboot單元測試-->org.springframework.bootspring-boot-starter-testtest

step2.編寫swagger配置類

想要使用swagger功能必須提供配置類,主要配置ui界面信息,以及配置掃描位置,swagger會根據配置的路徑掃描所有的服務生成api。

其中核心RequestHandlerSelectors.basePackage("com.simple.spring.boot.controller"),在這里配置我們的需要的掃描包位置。

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

@Configuration@EnableSwagger2public class SwaggerConfig {@Beanpublic Docket createRestApi() {returnnewDocket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.simple.spring.boot.controller")).paths(PathSelectors.any()).build();}privateApiInfoapiInfo() {returnnewApiInfoBuilder().title("Spring Boot中使用Swagger2構建RESTful APIs").description("myapp").termsOfServiceUrl("http://blog.csdn.net/SimpleWu").version("1.0").build(); }}

step3.編寫springboot啟動類

@ComponentScan(basePackages={"com.simple.spring.boot.controller"}) 也是需要配置掃描路徑。

@SpringBootApplication@ComponentScan(basePackages={"com.simple.spring.boot.controller"}) public class SwaggerApplication {publicstaticvoidmain(String[] args) {SpringApplication.run(SwaggerApplication.class, args); }}

step4.創建前端控制器

@RestController@Api(tags ="swgger測試服務", description ="swgger測試服務")@RequestMapping(value ="/simple/wu")publicclassTestController{@ApiOperation(value="測試POST方法", notes="測試POST方法")@ApiImplicitParam(name ="令牌", value ="ID", required = true, dataType ="token")@RequestMapping(value="hello", method=RequestMethod.POST)publicString post(@RequestBodyString token) { books.put(book.getId(), book);return"success"; }}

@Api(tags = "swgger測試服務", description = "swgger測試服務") 指定某個類提供服務的名字

@ApiOperation(value="測試POST方法", notes="測試POST方法") 指定某個請求的名字

@ApiImplicitParam(name = "令牌", value = "token", required = true, dataType = "String")指定名字對應參數為令牌,以及對應參數字段token,required = true代表這個參數為必填參數,dataType 代表數據類型。

step5.啟動服務

從上面的代碼中我們指定請求為POST在UI界面上我們會看到一個服務名字為swgger測試服務的大類點擊進去后可以看到里面所擁有的請求,如果指定這個請求的類型那么無法進行單元測試,指定后我們會看到一個請求名字叫做測試POST方法的請求并且需要填入必填參數token來完成我們的單元測試。

我們可以直接通過SwaggerApplication類來運行main方法來進行服務,端口號默認為8080.

swagger地址:http://localhost:8080/swagger-ui.html 只需要在地址后面加上swagger-ui.html即可訪問

我們訪問這個位置即可看到UI界面,界面簡潔并且容易上手,我這邊就不截圖了。

step.總結

swagger官方文檔:https://www.baeldung.com/swagger-2-documentation-for-spring-rest-api

swagger的一個最大的優點是能實時同步api與文檔。

在項目開發過程中,發生過多次:修改代碼但是沒有更新文檔,前端還是按照老舊的文檔進行開發,在聯調過程中才發現問題的情況(當然依據開閉原則,對接口的修改是不允許的,但是在項目不穩定階段,這種情況很難避免)。

如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

加群直通車:854630135

課堂直通車:點一下就進去啦

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容