SpringBoot整合Swagger2的完整過程記錄
前言
springBoot作為微服務(wù)首選框架,為其他服務(wù)提供大量的接口服務(wù)。接口對接方需要實(shí)時(shí)最近的接口文檔。
swagger可以通過代碼和注釋自動(dòng)為web項(xiàng)目生成在線文檔,這里使用swagger。
當(dāng) SpringBoot 代碼中 SpringMVC 使用自動(dòng)化配置類 WebMvcAutoConfiguration 時(shí),其整合 Swagger2 的方法如下。
如果 SpringMVC 的配置過程使用了 WebMvcConfigurationSupport;則如下的整合方法不適合。
一、Spring Boot Web 整合 Swagger2 過程
Spring Boot Web 項(xiàng)目整合 Swagger2 主要有兩個(gè)過程:
- 添加 Swagger2 相關(guān)依賴。
- 配置 Swagger2 配置類。
1.1、添加 Swagger2 相關(guān)依賴
首先要對 Spring Boot Web 的項(xiàng)目,添加 Swagger2 相關(guān)的依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
1.2、配置 Swagger2 配置類
@Configuration
@EnableSwagger2
public class Swagger {
//創(chuàng)建 Docket 的Bean
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//select() 函數(shù)返回一個(gè) ApiSelectorBuilder實(shí)例用來控制哪些接口暴露給 Swagger 來展現(xiàn)
.select()
//要掃描的包
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
//選擇API路徑
.paths(PathSelectors.any())
.build();
}
//創(chuàng)建文檔的基本信息
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Swagger UI 的標(biāo)題")
.description("用restful風(fēng)格寫接口")
.termsOfServiceUrl("")
.version("1.0")
.build();
}
}
二、配置 Swagger2 接口常用注解
2.1、@Api 請求類說明
寫在controller類定義上方,用于說明類的作用。
@Api(value = "Swagger Test Control",
description = "演示Swagger用法的Control類",
tags = "Swagger Test Control Tag")
2.2、@ApiOperation 方法的說明
寫在REST接口上方,用于說明方法的作用。
@ApiOperation( value="創(chuàng)建用戶", notes="根據(jù)User對象創(chuàng)建用戶")
2.3、@ApiImplicitParams 和 @ApiImplicitParam 方法參數(shù)說明
@ApiImplicitParams:用在請求的方法上,包含一組參數(shù)說明
@ApiImplicitParam:對單個(gè)參數(shù)的說明
name:參數(shù)名
value:參數(shù)的漢字說明、解釋
required:參數(shù)是否必須傳
paramType:參數(shù)放在哪個(gè)地方
· header --> 請求參數(shù)的獲?。篅RequestHeader
· query --> 請求參數(shù)的獲?。篅RequestParam
· path(用于restful接口)--> 請求參數(shù)的獲?。篅PathVariable
· body(請求體)--> @RequestBody User user
· form(普通表單提交)
dataType:參數(shù)類型,默認(rèn)String,其它值dataType="int"
defaultValue:參數(shù)的默認(rèn)值
--------------------------------------------------------------------
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "ID", dataType = "Long"),
@ApiImplicitParam(name = "user", value = "用戶", dataType = "User")
})
2.4、@ApiResponses 和 @ApiResponse 方法返回值的說明
@ApiResponses:方法返回對象的說明
@ApiResponse:每個(gè)參數(shù)的說明
code:數(shù)字,例如400
message:信息,例如"請求參數(shù)沒填好"
response:拋出異常的類
-------------------------------------------------------------------
@ApiResponses({
@ApiResponse(code = 400, message = "權(quán)限不足"),
@ApiResponse(code = 500, message = "服務(wù)器內(nèi)部異常") }
)
2.5、@ApiModel 和 @ApiModelProperty
@ApiModel 用于JavaBean 上面,表示一個(gè)JavaBean。這種一般用在post創(chuàng)建的時(shí)候,使用 @RequestBody 這樣的場景,請求參數(shù)無法使用 @ApiImplicitParam 注解進(jìn)行描述的時(shí)候。
@ApiModelProperty 用對象接收參數(shù)時(shí),描述對象的一個(gè)字段。
@ApiModel( description = "學(xué)生")
public class Student {
@ApiModelProperty(value = "主鍵id")
private String id;
@ApiModelProperty(value = "名稱", required = true)
private String name;
@ApiModelProperty(value = "年齡", required = true)
private int age;
}
2.6、其他注解
@ApiIgnore :使用該注解忽略這個(gè)API,不對這個(gè)接口生成文檔。
@ApiError:發(fā)生錯(cuò)誤返回的信息
總結(jié)
到此這篇關(guān)于SpringBoot整合Swagger2的文章就介紹到這了,更多相關(guān)SpringBoot整合Swagger2內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
華為鴻蒙系統(tǒng)應(yīng)用開發(fā)工具 DevEco Studio的安裝和使用圖文教程
HUAWEI DevEco Studio 是華為消費(fèi)者業(yè)務(wù)為開發(fā)者提供的集成開發(fā)環(huán)境(IDE),旨在幫助開發(fā)者快捷、方便、高效地使用華為EMUI開放能力。這篇文章主要介紹了華為鴻蒙系統(tǒng)應(yīng)用開發(fā)工具 DevEco Studio的安裝和使用圖文教程,需要的朋友可以參考下2021-04-04
java多線程關(guān)鍵字final和static詳解
這篇文章主要介紹了java多線程關(guān)鍵字final和static詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
springcloud nacos的賦值均衡和動(dòng)態(tài)刷新
nacos是一個(gè)分布式的配置中心和注冊發(fā)現(xiàn)中心,這篇文章主要介紹了springcloud nacos的賦值均衡和動(dòng)態(tài)刷新,需要的朋友可以參考下2024-05-05
Java NIO Selector用法詳解【含多人聊天室實(shí)例】
這篇文章主要介紹了Java NIO Selector用法,結(jié)合實(shí)例形式分析了Java NIO Selector基本功能、原理與使用方法,并結(jié)合了多人聊天室實(shí)例加以詳細(xì)說明,需要的朋友可以參考下2019-11-11
Centos6.5下Jdk+Tomcat+Mysql環(huán)境安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了Centos6.5系統(tǒng)下Jdk+Tomcat+Mysql環(huán)境安裝過程,感興趣的小伙伴們可以參考一下2016-05-05

