本系列文章介紹從0開(kāi)始搭建一個(gè)基于分布式的醫(yī)療掛號(hào)系統(tǒng)。本次四篇文章完成了
醫(yī)院設(shè)置微服務(wù)模塊
的后端接口,為了方便開(kāi)發(fā)汉匙,對(duì)接口的返回結(jié)果
、全局異常
生蚁、全局日志
進(jìn)行了統(tǒng)一處理噩翠。 同時(shí),為了方便進(jìn)行訪問(wèn)測(cè)試邦投,還整合了Swagger2工具
伤锚,這些通用的模塊中,除了全局日志
被放在醫(yī)院設(shè)置微服務(wù)模塊的配置資源中志衣,其余都統(tǒng)一被抽取在common模塊中屯援。具體實(shí)現(xiàn)可參考下面文章:
- 醫(yī)院設(shè)置微服務(wù) | 模塊搭建
- 醫(yī)院設(shè)置微服務(wù) | 接口開(kāi)發(fā)
- 通用模塊 | 整合Swagger2
- 通用模塊 | 統(tǒng)一返回結(jié)果、統(tǒng)一異常處理念脯、統(tǒng)一日志處理
作者:Hudie
微信公眾號(hào)/CSDN博客:編程一只蝶
項(xiàng)目已開(kāi)源至gitee:https://gitee.com/guo-qianliang/yygh_parent
項(xiàng)目已開(kāi)源至github:https://github.com/Guoqianliang/yygh_parent
在使用REST風(fēng)格進(jìn)行接口的開(kāi)發(fā)測(cè)試時(shí)狞洋,post請(qǐng)求無(wú)法使用瀏覽器直接進(jìn)行訪問(wèn)測(cè)試,目前流行的解決方案是使用Swagger2绿店。Swagger2是一個(gè)API接口文檔吉懊,通過(guò)Swagger2可以方便各種提交方式的接口測(cè)試庐橙。
- 通過(guò)Swagger2,我們可以看到接口名稱(chēng)借嗽、請(qǐng)求方法态鳖、傳遞參數(shù)、返回信息等淹魄。
通用模塊整合swagger2步驟
本項(xiàng)目中郁惜,眾多的微服務(wù)都需要整合Swagger2,所以我將其依賴(lài)引入在了通用的common父模塊
中甲锡,配置在common_util
模塊中兆蕉。
1.引入swagger依賴(lài)
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
2.配置Swagger2
如下的Swagger2配置信息中分別創(chuàng)建了webApi分組和adminApi分組的Bean。
/**
* Swagger2配置信息
*/
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket webApiConfig() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
//只顯示api路徑下的頁(yè)面
.paths(Predicates.and(PathSelectors.regex("/api/.*")))
.build();
}
@Bean
public Docket adminApiConfig() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("adminApi")
.apiInfo(adminApiInfo())
.select()
//只顯示admin路徑下的頁(yè)面
.paths(Predicates.and(PathSelectors.regex("/admin/.*")))
.build();
}
private ApiInfo webApiInfo() {
return new ApiInfoBuilder()
.title("網(wǎng)站-API文檔")
.description("本文檔描述了網(wǎng)站微服務(wù)接口定義")
.version("1.0")
.contact(new Contact("gql", "http://gql.com", "guoqianliang@foxmail.com"))
.build();
}
private ApiInfo adminApiInfo() {
return new ApiInfoBuilder()
.title("后臺(tái)管理系統(tǒng)-API文檔")
.description("本文檔描述了后臺(tái)管理系統(tǒng)微服務(wù)接口定義")
.version("1.0")
.contact(new Contact("gql", "http://gql.com", "guoqianliang@foxmail.com"))
.build();
}
}
3.啟動(dòng)類(lèi)添加包掃描
Swagger2的配置類(lèi)寫(xiě)好了缤沦,現(xiàn)在需要在service_host模塊
使用配置類(lèi)虎韵。由于二者不在同一個(gè)項(xiàng)目中,所以需要在service_host模塊
的父模塊的pom中引入service_util
缸废。而兩者包名不同包蓝,還需要額外在啟動(dòng)類(lèi)上添加包掃描。
測(cè)試
項(xiàng)目啟動(dòng)后訪問(wèn):http://localhost:8201/swagger-ui.html 企量,可以看到項(xiàng)目中接口的信息:
在Controller中添加下面幾個(gè)簡(jiǎn)單的Api注解测萎,可以將swagger中的一些信息定義為中文:
如果需要測(cè)試接口,我們只需要點(diǎn)擊接口下方的Try it out
按鈕:
點(diǎn)擊按鈕后即可届巩,看到接口的一系列返回信息:
swagger常用注解
注解 | 說(shuō)明 |
---|---|
@Api | 修飾整個(gè)類(lèi)硅瞧,描述Controller的作用 |
@ApiOperation | 描述一個(gè)類(lèi)的一個(gè)方法,或者說(shuō)一個(gè)接口 |
@ApiParam | 單個(gè)參數(shù)描述 |
@ApiModel | 用對(duì)象來(lái)接收參數(shù) |
@ApiModelProperty | 用對(duì)象接收參數(shù)時(shí)恕汇,描述對(duì)象的一個(gè)字段 |
@ApiImplicitParam | 一個(gè)請(qǐng)求參數(shù) |
@ApiImplicitParams | 多個(gè)請(qǐng)求參數(shù) |