參考地址
說明
以下配置是基於spring-boot項目。
注解
- @Api()用於類;
表示標識這個類是swagger的資源
- @ApiOperation()用於方法;
表示一個http請求的操作
- @ApiParam()用於方法,參數,字段說明;
表示對參數的添加元數據(說明或是否必填等)
- @ApiModel()用於類
表示對類進行說明,用於參數用實體類接收
- @ApiModelProperty()用於方法,字段
表示對model屬性的說明或者數據操作更改
- @ApiIgnore()用於類,方法,方法參數
表示這個方法或者類被忽略
- @ApiImplicitParam() 用於方法
表示單獨的請求參數
- @ApiImplicitParams() 用於方法
包含多個 @ApiImplicitParam
實踐
@Api() - 用於類;表示標識這個類是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="UserController",tags={"用戶接口"}) @RestController public class UserController { @ApiOperation(value="獲取用戶信息",tags={"獲取用戶信息"},notes="注意") @GetMapping("/getUserInfo") public User getUserInfo(@ApiParam(name="id",value="用戶id",required=true) Long id,@ApiParam(name="username",value="用戶名") String username) {
User user = userService.getUserInfo(); return user; } }
@ApiModel() - 用於類 ;表示對類進行說明,用於參數用實體類接收
value–表示對象名
description–描述
@ApiModelProperty() - 用於方法,字段; 表示對model屬性的說明或者數據操作更改
value–字段說明
name–重寫屬性名字
dataType–重寫屬性類型
required–是否必填
example–舉例說明
hidden–隱藏
@ApiModel(value="user",description="用戶對象") @Data public class User implements Serializable{ private static final long serialVersionUID = 1L; @ApiModelProperty(value="用戶名",name="username",example="xingguo") private String username; @ApiModelProperty(value="狀態",name="state",required=true) private Integer state; private String password; private String nickName; private Integer isDeleted; @ApiModelProperty(value="ids",hidden=true) private String[] ids; private List<String> idList; }
@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="xingguo"), @ApiImplicitParam(name="id",value="用戶id",dataType="long", paramType = "query")}) public void select(){ }
pom依賴
<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>
<!-- 下面這個界面更好看,更好用-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.5</version>
</dependency>
具體配置
(包含分組)
import com.google.common.base.Predicates; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.ArrayList; import java.util.List; /** * swagger-api 配置 * * @author wzm * @version 1.0.0 * @date 2019/6/15 **/ @Configuration @EnableSwagger2 @EnableSwaggerBootstrapUI public class Swagger2 { /** * http://localhost:8085/fabric-net/swagger-ui.html * http://localhost:8085/fabric-net/doc.html */
private static final String SWAGGER_SCAN_BUSINESS_PACKAGE = "com.thyc.fabric.controller.business"; private static final String BUSINESS_VERSION = "1.0.0"; private static final String SWAGGER_SCAN_FABRIC_PACKAGE = "com.thyc.fabric.controller.fabric"; private static final String FABRIC_VERSION = "1.0.0"; @Bean public Docket createBusinessApi() { List<Parameter> pars = new ArrayList<>(); ParameterBuilder ticketPar1 = new ParameterBuilder(); ticketPar1.name("Authorization").description("登錄令牌") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); pars.add(ticketPar1.build()); return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(pars) //分組名不支持中文
.groupName("business") .apiInfo(apiBusinessInfo()) .pathMapping("/") .select() // 對所有api進行監控
.apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_BUSINESS_PACKAGE)) // 錯誤路徑不監控
.paths(Predicates.not(PathSelectors.regex("/error.*"))) // 對根下所有路徑進行監控
.paths(PathSelectors.regex("/.*")) .build(); } private ApiInfo apiBusinessInfo() { Contact contact = new Contact("thyc","thyc.com","thyc@email"); return new ApiInfoBuilder() //設置文檔的標題
.title("Business") //設置文檔的描述->1.Overview
.description("業務模塊數據管理") //設置文檔的版本信息-> 1.1 Version information
.termsOfServiceUrl("http://localhost:8085/fabric-net") .contact(contact) .version(BUSINESS_VERSION) .build(); } //------------------------------------------------------------------------------------------------------------------
@Bean public Docket createFabricApi() { List<Parameter> pars = new ArrayList<Parameter>(); ParameterBuilder ticketPar1 = new ParameterBuilder(); ticketPar1.name("Authorization").description("登錄令牌") .modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); pars.add(ticketPar1.build()); return new Docket(DocumentationType.SWAGGER_2) .globalOperationParameters(pars) //分組名不支持中文
.groupName("fabric") .apiInfo(apiFabricInfo()) .pathMapping("/") .select() // 對所有api進行監控
.apis(RequestHandlerSelectors.basePackage(SWAGGER_SCAN_FABRIC_PACKAGE)) // 錯誤路徑不監控
.paths(Predicates.not(PathSelectors.regex("/error.*"))) // 對根下所有路徑進行監控
.paths(PathSelectors.regex("/.*")) .build(); } private ApiInfo apiFabricInfo() { Contact contact = new Contact("thyc","thyc.com","thyc@email"); return new ApiInfoBuilder() //設置文檔的標題
.title("Fabric-Network") //設置文檔的描述->1.Overview
.description("超級賬本網絡信息管理") //設置文檔的版本信息-> 1.1 Version information
.termsOfServiceUrl("http://localhost:8085/fabric-net") .contact(contact) .version(FABRIC_VERSION) .build(); } }