Swagger笔记(入门)

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());
}

谢谢阅读,如有错误,欢迎指正

Guess you like

Origin blog.csdn.net/weixin_46242580/article/details/118946119