效果:
1.controller编写
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import vip.zhonghui.base.common.vo.Result;
@Api(tags = "测试api")
@RestController
public class TestController {
@ApiOperation(value = "详情")
@GetMapping(value = "/test/detail/{id}")
public Result detail(@ApiParam(value = "方案ID", example = "1", required = true, type = "Long") @PathVariable() Long id) {
return Result.ok();
}
}
2.导包
maven:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>3.0.3</version>
</dependency>
gradle:
//swagger
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-ui', version: '3.0.3'
3.配置
SwaggerConfig.java,里面的xxx为项目中实际的
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import org.springframework.beans.factory.annotation.Value;
@Configuration
@EnableSwagger2
//通过配置文件指定环境访问权限
//@Profile({"dev"})
public class SwaggerConfig {
//通过环境变量方式控制访问权限
@Value("${swagger.enabled}")
private boolean swaggerEnabled;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("console")
.select()
.apis(RequestHandlerSelectors.basePackage("xxx.xxx.controller"))
.paths(PathSelectors.any())
.build().enable(swaggerEnabled);
}
//访问地址:http://xxx/doc.html
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.contact(
new Contact("admin", "www.xxx.com", "www.xxx.com")
)
.title("xxx项目")
.description("xxx项目api文档")
.termsOfServiceUrl("")
.version("1.0")
.build();
}
}
application.properties
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
# swagger变量控制访问
swagger.enabled=${SWAGGER_ENABLED:false}