您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Swagger2 的正確玩法是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
簡單的來說,Swagger2的誕生就是為了解決前后端開發人員進行交流的時候API文檔難以維護的痛點,它可以和我們的Java程序完美的結合在一起,并且可以與我們的另一開發利器Spring Boot來配合使用。
<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 */ @Configuration public 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 @EnableSwaggerBootstrapUI public class ViBootSwaggerApplication { public static void main(String[] args) { SpringApplication.run(ViBootSwaggerApplication.class, args); } }
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 | 方法 | 例子 |
先貼幾張spring-fox的ui(正是我們所熟知的那一套)
相信看到這里,大家心里對于這兩套UI的選擇應該都有個答案了,當然bootstrap風格的ui不僅好看,而且有各種強大的功能~
導出md文檔
參數緩存
上述就是小編為大家分享的Swagger2 的正確玩法是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。