Swagge笔记(入门)
引入swagger的目的:
前后端交互即时发生,
接口测试更加方便(相较于postman方便不少),
接口文档不需要重新编写,伴随后端项目实时生成,节约了开发时间成本
引入依赖
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
增加配置类
@EnableSwagger2//开启swagger2
@Configuration
public class Swagger2Configuration {
}
此时可以通过访问URL得到swagger文档
http://localhost:8080/swagger-ui.html
控制层接口添加注解
@Api(tags = "控制层接口控制") //添加在类上
@Apioperator //添加在方法上
@ApiResponses({
@ApiResponse(code= 200, message = "请求成功")
})//添加在方法上
@ApiParam//添加在参数上,也可以添加在方法上
依赖环境配置
生产环境(“pro”)中禁止使用swagger文档,恶意人员会获得请求接口发送恶意请求
开发环境(“dev”)使用swagger文档
测试环境(“test”)使用swagger文档
配置不同的application.yml配置文档
application.yml-------->决定环境配置
application-pro.yml
application-dev.yml
application-test.yml
方法一:@Profile注解
在swagger配置类使用注解@Profile({“dev”,“test”})
表示在开发或测试环境开启,而在生产关闭。(推荐使用)
方法二:@Value注解
在配置文件中使用配置
swagger.enable=true
在swagger配置类自定义属性
@Value("${swagger.enable}")//引入配置文件中的值
private Boolean enable;
在Docket中配置
@Bean
public Docket swaggerPersonApi10() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
.paths(PathSelectors.any())
.enable(enable)//true开启,false关闭
.build()
.apiInfo(apiInfo());
}
方法三:@ConditionalOnProperty(当配置文件中配置了某些属性的时候才会组件注入)
在swagger配置类添加注解
@ConditionalOnProperty(name ="enabled" ,prefix = "swagger",havingValue = "true",matchIfMissing = true)
在配置文件中添加
swagger.enable=true
方法四:借助于Profiles接口
import org.springframework.core.env.Profiles;
@Bean
public Docket docket2(Environment environment){
Profiles profiles = Profiles.of("dev","test");//接口的静态of方法
boolean flag = environment.acceptsProfiles(profiles);//获得当前的配置环境,如果是dev或者test环境,就返回true
return new Docket(DocumentationType.SWAGGER_2)
.select().apis(RequestHandlerSelectors.basePackage("com.xuehongyuan.swagger2test"))
.paths(PathSelectors.any())
.build()
.enable(flag)
.apiInfo(apiInfo1());
}
谢谢阅读,如有错误,欢迎指正