一 引入maven依賴
<!--整合Swagger2--> <dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-spring-boot-starter</artifactId> <version>1.9.0.RELEASE</version> </dependency> <!--第一種swagger ui--> <!-- <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.8.9</version> </dependency>--> <!--第二種swagger ui--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version> 1.9.6</version> </dependency>
二 編寫配置文件
@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket customDocket() { return new Docket(DocumentationType.SWAGGER_2) .genericModelSubstitutes(DeferredResult.class) .useDefaultResponseMessages(false) .forCodeGeneration(false) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("JT天娛網絡科技有限公司APi") .description("文檔描述") .contact("ss") // 聯系方式 .version("1.1.0") // 版本 .termsOfServiceUrl("http://localhost:8080/doc.html") .description("本系統純屬虛構,如有雷同...") .build(); } }
三 啟動項目訪問http://localhost:8080/doc.html或者http://localhost:8080/swagger-ui.html
我這里訪問的是http://localhost:8080/doc.html ps:訪問這個url需要添加swagger-bootstrap-ui 依賴
效果圖如下:
四 Swagger2常用注解介紹
常用注解:
- @Api()用於類;
表示標識這個類是swagger的資源
- @ApiOperation()用於方法;
表示一個http請求的操作
- @ApiParam()用於方法,參數,字段說明;
表示對參數的添加元數據(說明或是否必填等)
- @ApiModel()用於類
表示對類進行說明,用於參數用實體類接收
- @ApiModelProperty()用於方法,字段
表示對model屬性的說明或者數據操作更改
- @ApiIgnore()用於類,方法,方法參數
表示這個方法或者類被忽略
- @ApiImplicitParam() 用於方法
表示單獨的請求參數
- @ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam
具體使用說明:
用於類;表示標識這個類是swagger的資源
tags–表示說明
value–也是說明,可以使用tags替代
但是tags如果有多個值,會生成多個list
@Api(value="用戶controller",tags={"用戶操作接口"}) @RestController public class UserController { }
@ApiOperation() 用於方法;表示一個http請求的操作
value用於方法描述
notes用於提示內容
tags可以重新分組(視情況而用)
@ApiParam() 用於方法,參數,字段說明;表示對參數的添加元數據(說明或是否必填等)
name–參數名
value–參數說明
required–是否必填
@Api(value="用戶controller",tags={"用戶操作接口"}) @RestController public class UserController { @ApiOperation(value="獲取用戶信息",tags={"獲取用戶信息copy"},notes="注意問題點") @GetMapping("/getUserInfo") public User getUserInfo(@ApiParam(name="id",value="用戶id",required=true) Long id,@ApiParam(name="username",value="用戶名") String username) { // userService可忽略,是業務邏輯 User user = userService.getUserInfo(); return user; } }
@ApiModel()用於類 ;表示對類進行說明,用於參數用實體類接收
value–表示對象名
description–描述
都可省略
@ApiModelProperty()用於方法,字段; 表示對model屬性的說明或者數據操作更改
value–字段說明
name–重寫屬性名字
dataType–重寫屬性類型
required–是否必填
example–舉例說明
hidden–隱藏
@ApiModel(value="user對象",description="用戶對象user") public class User implements Serializable{ private static final long serialVersionUID = 1L; @ApiModelProperty(value="用戶名",name="username",example="mctao") private String username; @ApiModelProperty(value="狀態",name="state",required=true) private Integer state; private String password; private String nickName; private Integer isDeleted; @ApiModelProperty(value="id數組",hidden=true) private String[] ids; private List<String> idList; //省略get/set }
@ApiOperation("更改用戶信息") @PostMapping("/updateUserInfo") public int updateUserInfo(@RequestBody @ApiParam(name="用戶對象",value="傳入json格式",required=true) User user){ int num = userService.updateUserInfo(user); return num; }
@ApiIgnore()用於類或者方法上,可以不被swagger顯示在頁面上
比較簡單, 這里不做舉例
@ApiImplicitParam() 用於方法
表示單獨的請求參數
@ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam
name–參數ming
value–參數說明
dataType–數據類型
paramType–參數類型
example–舉例說明
@ApiOperation("查詢測試") @GetMapping("select") //@ApiImplicitParam(name="name",value="用戶名",dataType="String", paramType = "query") @ApiImplicitParams({ @ApiImplicitParam(name="name",value="用戶名",dataType="string", paramType = "query",example="mctao"), @ApiImplicitParam(name="id",value="用戶id",dataType="long", paramType = "query")}) public void select(){ }
此文章純屬學習筆記,如有什么不足之處請在下方留言,我一會竭力改進