依賴版本信息 Spring boot 2.1.0.RELEASE swagger2 2.7.0 1- mvn 配置 pom.xml 包引入 1 <!--swagger2依賴--> 2 <dependency> 3 <groupId>io.springfox</groupId> 4 <artifact ...
依賴版本信息 Spring boot 2.1.0.RELEASE swagger2 2.7.0 1. mvn 配置 pom.xml 包引入
1 <!--swagger2依賴--> 2 <dependency> 3 <groupId>io.springfox</groupId> 4 <artifactId>springfox-swagger2</artifactId> 5 <version>2.7.0</version> 6 </dependency> 7 <dependency> 8 <groupId>io.springfox</groupId> 9 <artifactId>springfox-swagger-ui</artifactId> 10 <version>2.7.0</version> 11 </dependency> 12 <!--swagger2美化插件依賴--> 13 <dependency> 14 <groupId>com.github.xiaoymin</groupId> 15 <artifactId>swagger-bootstrap-ui</artifactId> 16 <version>1.6</version> 17 </dependency>2.配置Config 在Application.java同級目錄創建 Swagger2Config.java 內容
package com.muyuer.springdemo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.muyuer.springdemo.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("XX系統_介面文檔") .description("XX系統,具體包括XXX,XXX模塊...") .contact(new springfox.documentation.service.Contact("muyuer", "http://www.615000.com", "[email protected]")) .version("版本號:1.0") .build(); } }
3.Swagger註解
swagger通過註解表明該介面會生成文檔,包括介面名、請求方法、參數、返回信息的等等。
@Api:修飾整個類,描述Controller的作用
@ApiOperation:描述一個類的一個方法,或者說一個介面
@ApiParam:單個參數描述
@ApiModel:用對象來接收參數
@ApiProperty:用對象接收參數時,描述對象的一個欄位
@ApiResponse:HTTP響應其中1個描述
@ApiResponses:HTTP響應整體描述
@ApiIgnore:使用該註解忽略這個API
@ApiError :發生錯誤返回的信息
@ApiImplicitParam:一個請求參數
@ApiImplicitParams:多個請求參數
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * @author by muyuer * @date : 2018-11-30 14:22 */ @Api("介面用途 XX介面") @RestController public class HelloController { @ApiOperation("描述方法用途 XX方法") @GetMapping("/hello") public String say(){ return "Hello SpringBoot!"; } @ApiOperation("描述方法用途 xx方法") @ApiImplicitParam(name = "name", value = "XX參數", dataType = "String") @GetMapping("/hello2") public String say2(String name){ return name + ": Hello SpringBoot!"; } }
4.遇到的問題
開始使用其它版本swagger出現過以下錯誤 {"code":404,"message":"介面 [/swagger-ui.html] 不存在"} 網上搭建答案是 添加 WebMvcConfigurer.java內容如下//swagger2配置 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); }
自己實際測試添加了這些代碼並未生效
重新建了項目引用上面版本的Spring boot 2.1.0.RELEASE swagger2 2.7.0包後即成功了。