Swagger-ui接口文檔

參考地址

 

說明

如下配置是基於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(); } }
相關文章
相關標籤/搜索