Swagger2配置與使用
Swagger2介紹
前后端分離開發模式中,api文檔是最好的溝通方式。
Swagger 是一個規范和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。
- 及時性 (接口變更后,能夠及時准確地通知相關前后端開發人員)
- 規范性 (並且保證接口的規范性,如接口的地址,請求方式,參數及響應格式和錯誤信息)
- 一致性 (接口信息一致,不會出現因開發人員拿到的文檔版本不一致,而出現分歧)
- 可測性 (直接在接口文檔上進行測試,以方便理解業務)
寫完后端代碼需要調試,swagger很方便解決了這一點:

配置過程:
1、建Module
在ParentProject下創建一個module
2、引入POM
<dependencies>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<scope>provided </scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<scope>provided </scope>
</dependency>
</dependencies>
3、創建swagger的配置類
創建包com.courage.servicebase.config,創建類SwaggerConfig,注解Configuration告訴springboot這是一個配置類,EnableSwagger2啟用Swagger2.
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/admin/.*")))
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("網站-課程中心API文檔")
.description("本文檔描述了課程中心微服務接口定義")
.version("1.0")
.contact(new Contact("Courage",
"http://Courage.com",
"Courage129@163.com"))
.build();
}
}
4、使用
在需要用swagger的模塊中的pom文件以依賴的形式引入swagger這個module
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
常用API
Api注解
可以用來標記當前Controller的功能。

ApiOperation注解
用來標記一個方法的作用。

ApiImplicitParam注解
用來描述一個參數,可以配置參數的中文含義,也可以給參數設置默認值,這樣在接口測試的時候可以避免手動輸入。
如果有多個參數,則需要使用多個@ApiImplicitParam注解來描述,多個@ApiImplicitParam注解需要放在一
ApiImplicitParams注解中。
需要注意的是,@ApiImplicitParam注解中雖然可以指定參數是必填的,但是卻不能代替

RequestParam(required = true),
前者的必填只是在Swagger2框架內必填,拋棄了Swagger2,這個限制就沒用了,所以假如開發者需要指定一個參數必填,@RequestParam(required = true)注解還是不能省略。
如果參數是一個對象(例如上文的更新接口),對於參數的描述也可以放在實體類中。例如下面一段代碼:
