Spring Boot 2.x (十二):Swagger2的正確玩兒法
Swagger2簡介
簡單的來說,Swagger2的誕生就是為了解決前後端開發人員進行交流的時候API文件難以維護的痛點,它可以和我們的Java程式完美的結合在一起,並且可以與我們的另一開發利器Spring Boot來配合使用。
開始使用
第一步:匯入POM檔案
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- 這裡使用 swagger-bootstrap-ui 替代了原有醜陋的ui,拯救處女座~ --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.9.0</version> </dependency>
#### 第二步:新增配置類
我們需要新增一個Swagger2Config 的配置類:
/** * Swagger2 配置類 * @author vi * @since 2019/3/6 8:31 PM */@Configurationpublic class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("indi.viyoung.viboot.*")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("viboot-swagger2") //標題 .description("Restful-API-Doc") //描述 .termsOfServiceUrl("https://www.cnblogs.com/viyoung") //這裡配置的是服務網站,我寫的是我的部落格園站點~歡迎關注~ .contact(new Contact("Vi的技術部落格", "https://www.cnblogs.com/viyoung", "18530069930@163.com")) // 三個引數依次是姓名,個人網站,郵箱 .version("1.0") //版本 .build(); } }
第三步:在啟動類中新增配置
注意一定要記得新增@EnableSwagger2
註解
/** * @author vi * @since 2019/3/6 6:35 PM */@SpringBootApplication@ComponentScan(value = "indi.viyoung.viboot.*")@MapperScan(value = "indi.viyoung.viboot.swagger2.mapper")@EnableSwagger2@EnableSwaggerBootstrapUIpublic class ViBootSwaggerApplication { public static void main(String[] args) { SpringApplication.run(ViBootSwaggerApplication.class, args); } }
第四步:透過註解來完成API文件
1. @Api
註解名稱 | 註解屬性 | 作用域 | 屬性作用 |
---|---|---|---|
@Api |
tags | 類 | 說明該類的作用 |
value | 類 | 說明該類的作用 |
舉個:
@Api(value = "使用者類控制器",tags="使用者類控制器")public class UserController { ... }
2 . @ApiOperation
註解名稱 | 註解屬性 | 作用域 | 屬性作用 |
---|---|---|---|
@ApiOperation() |
value | 方法 | 描述方法作用 |
notes | 方法 | 提示內容 | |
tags | 方法 | 分組 |
舉個:
@ApiOperation(value = "獲取使用者列表",notes = "獲取使用者列表") public List<User> get() { ... }
3. @ApiParam
註解名稱 | 註解屬性 | 作用域 | 屬性作用 |
---|---|---|---|
@ApiParam() |
name | 方法引數 | 引數名 |
value | 方法引數 | 引數說明 | |
required | 方法引數 | 是否必填 |
舉個:
@ApiOperation(value="獲取使用者詳細資訊", notes="根據url的id來獲取使用者詳細資訊") public User get(@ApiParam(name="id",value="使用者id",required=true) Long id) { log.info("GET..{}...方法執行。。。",id); return userService.getById(id); }
4. @ApiModel && @ApiModelProperty
註解名稱 | 註解屬性 | 作用域 | 屬性作用 |
---|---|---|---|
@ApiModel() |
value | 類 | 物件名 |
description | 類 | 描述 | |
@ApiModelProperty() |
value | 方法 | 欄位說明 |
name | 方法 | 屬性名 | |
dataType | 方法 | 屬性型別 | |
required | 方法 | 是否必填 | |
example | 方法 | 舉例 | |
hidden | 方法 | 隱藏 |
舉個:
@ApiModel(value="user物件",description="使用者物件user")public class User implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "使用者ID",example = "1000001",hidden=true) private Long id; @ApiModelProperty(value="使用者名稱",required = true,dataType = "String") private String userName; @ApiModelProperty(value = "密碼") private String password; }
5. @ApiImplicitParam && @ApiImplicitParams
`@ApiImplicitParam`可以單個用於方法至上,多個引數的話可以把`@ApiImplicitParam`放到`@ApiImplicitParams`中,這裡只羅列`@ApiImplicitParam`的屬性:
註解名稱 | 註解屬性 | 作用域 | 屬性作用 |
---|---|---|---|
@ApiImplicitParam() |
value | 方法 | 引數說明 |
name | 方法 | 引數名 | |
dataType | 方法 | 資料型別 | |
paramType | 方法 | 引數型別 | |
example | 方法 | 舉例 |
舉個:
@ApiImplicitParams({ @ApiImplicitParam(name = "user", value = "使用者實體user", required = true, dataType = "User") }) public void put(User user) { userService.updateById(user); log.info("PUT方法執行。。。"); }
這裡需要注意一點,我們並沒有在註解中寫圖中圈中的兩個引數,這個是去讀取了我們剛剛為User
類的註解,並將使用者名稱設定為必填!
6.@ApiResposne && @ApiResponses
@ApiResponses
與@ApiResponse
的關係和@ApiImplicitParam
&& @ApiImplicitParams
的關係和用法都是類似的
註解名稱 | 註解屬性 | 作用域 | 屬性作用 |
---|---|---|---|
@ApiResponse() |
response | 方法 | 返回類 |
code | 方法 | 返回碼 | |
message | 方法 | 返回資訊 | |
examples | 方法 | 例子 |
最後再聊聊這個UI
先貼幾張spring-fox的ui(正是我們所熟知的那一套)
相信看到這裡,大家心裡對於這兩套UI的選擇應該都有個答案了,當然bootstrap風格的ui不僅好看,而且有各種強大的功能~
匯出md文件
引數快取
作者:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758/viewspace-2822077/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring Boot使用AOP的正確姿勢Spring Boot
- spring boot 2.xSpring Boot
- Spring Boot 2.x(十六):玩轉vue檔案上傳Spring BootVue
- Spring Boot 2.X(七):Spring Cache 使用Spring Boot
- Spring Boot(十二):Spring Boot 如何測試打包部署Spring Boot
- Spring Boot實戰:整合Swagger2Spring BootSwagger
- 玩轉 Ceph 的正確姿勢
- 學習Spring Boot:(六) 整合Swagger2Spring BootSwagger
- Spring Boot 2.X 如何快速整合jpa?Spring Boot
- Spring Boot 2.x實戰之StateMachineSpring BootMac
- Spring Boot 3.2專案中使用快取Cache的正確姿勢!!!Spring Boot快取
- 玩轉spring boot——websocketSpring BootWeb
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- 再見 Spring Boot 1.X ,Spring Boot 2.X 走向舞臺中心Spring Boot
- Spring Boot 2.x(十一):AOP列印介面資訊Spring Boot
- Spring Boot 2.x基礎教程:使用MongoDBSpring BootMongoDB
- Spring Boot 2.x 到 3.2 的全面升級指南Spring Boot
- Spring Boot 整合 Swagger2,構建強大的 API 文件Spring BootSwaggerAPI
- Spring boot 之自動生成API文件swagger2Spring BootAPISwagger
- 玩轉spring boot——war部署Spring Boot
- 玩轉spring boot——開篇Spring Boot
- 玩轉spring boot——properties配置Spring Boot
- 單例模式的正確寫法單例模式
- Spring Boot 2.x基礎教程:EhCache快取的使用Spring Boot快取
- Spring Boot 2.x(十七):快速入門Elastic SearchSpring BootAST
- Spring Boot 2.x基礎教程:快速入門Spring Boot
- Spring Boot 2.x(九):遇到跨域不再慌Spring Boot跨域
- Spring Boot 2.x基礎教程:使用JdbcTemplate訪Spring BootJDBC
- 糾正對“用正確的工具幹活兒”這句話的誤解
- 架構實戰篇(二):Spring Boot 整合Swagger2架構Spring BootSwagger
- 玩轉spring boot——ajax跨域Spring Boot跨域
- 玩轉spring boot——國際化Spring Boot
- 玩轉spring boot——結合dockerSpring BootDocker
- 玩轉spring boot——結合redisSpring BootRedis
- 玩轉spring boot——MVC應用Spring BootMVC
- 玩轉spring boot——快速開始Spring Boot
- Spring Boot 2.x(六):優雅的統一返回值Spring Boot
- Java併發(二十二)----wait notify的正確姿勢JavaAI