Sprngboot配置Swagger接口文档

一、背景

小明今天要跟前端同学对接,发现接口,都是直接同个微信或者qq发给他,效率很低,而且前端同学也不能测试调用,在对接过程很麻烦,也很费时,他现在很苦恼,大家有什么好的接口文档工具推荐了。

其实现在已经有很多文档对接的工具了,以前使用的是国外的postman,到现在国内的apipost或者apifox等等,或者代码接口集成工具swagger。今天给初入职场的同学们,介绍一下如何整合Swagger以及如何配置指定环境访问。

二、整合Swagger

1.工程pom引入swagger依赖

javascript 复制代码
        <!--   整合swagger    -->
        <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>

2.新增SwaggerConfig配置文件

主要是配置swagger文档扫描的包和方法

javascript 复制代码
@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            //加了ApiOperation注解的类,才生成接口文档
            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            //包下的类,才生成接口文档
            //.apis(RequestHandlerSelectors.basePackage("io.renren.controller"))
            .paths(PathSelectors.any())
            .build()
            .securitySchemes(security());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("接口文档")
            .description("swagger接口文档")
            .version("3.0.0")
            .build();
    }

    private List<ApiKey> security() {
        return newArrayList(
            new ApiKey("token", "token", "header")
        );
    }

}

这里要注意的是,不要在启动类添加@EnableSwagger2,这样会导致整个工程所有接口都生成了swagger文档。

3.控制层编写接口

@Api("APP测试接口"):标注接口类,说明改类做什么

@ApiOperation(value = "登录接口", notes = "登录接口"):标注每个方法,说明改接口方法用途

@ApiImplicitParam(name = "name", value = "用户名",required = true, type = "string"):标记方法参数

javascript 复制代码
@Api("APP测试接口")
@RestController
public class SwaggerController {

    @ApiOperation(value = "登录接口", notes = "登录接口")
    @ApiImplicitParam(name = "name", value = "用户名",
                    required = true, type = "string")
    @GetMapping("/swagger/login")
    public String login(String name){

       return "登录成功 :" + name;
    }
}

三、启动工程,Swagger文档调用接口

启动项目工程,浏览器访问地址:

http://localhost:端口号/swagger-ui.html#/

点击对应接口,展开进行调试,发现可以正常调用接口

四、配置swagger指定环境访问

以上基本是完成了swagger的配置了,但是一般项目开发,为了安全起见,会禁止正式环境的访问,或者同个配置中心开启。接下来给大家介绍一下,如何动态设置swagger环境访问。

1.添加配置属性

在SwaggerConfig配置文件类前中添加注解,指定swagger.enable属性,为true,改配置类才生效

javascript 复制代码
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")

2.新建不同环境配置文件

主application.yaml文件中添加配置环境,这样启动工程就会,springboot就会自动拼接:application-dev.yaml、application-test.yaml、application-pro.yaml,然后根据profiles配置读取对应的配置文件,

javascript 复制代码
spring:
  profiles:
#  #在此选择环境 dev test pro
    active: dev

新建不同环境的application.yaml文件,后缀由dev、test、pro

application-dev.yaml配置swagger为true

javascript 复制代码
swagger:
  enable: true

application-pro.yaml配置swagger为false

javascript 复制代码
swagger:
  enable: false

3.动态修改application.yaml环境配置

其实有两种方式进行修改

一种是直接通过配置中心动态修改,项目部署上线之后,想要在在正式环境访问的话,直接修改application-pro.yaml配置swagger为true。

另一种就是同个maven构建打包的时候,自动切换读取对应的配置文件

五、总结

本文主要讲了如何配置swagger接口文档,以及如何控制不同环境访问,一般开发,根据个人经验,除非新工程,才需要配置swagger,不然都是已经大佬搭建好了,我们只要熟悉使用swagger相关注解,按照规范进行定义接口。不过控制不同环境访问,这个是我工作中遇到的,很多大佬搭建的时候,都没在意,而且网上方法也是参差不齐,

相关推荐
踏浪无痕8 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假9 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
武子康10 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
maozexijr10 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
源码获取_wx:Fegn089510 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
独断万古他化10 小时前
【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略
java·后端·spring·java-ee
毕设源码_郑学姐10 小时前
计算机毕业设计springboot基于HTML5的酒店预订管理系统 基于Spring Boot框架的HTML5酒店预订管理平台设计与实现 HTML5与Spring Boot技术驱动的酒店预订管理系统开
spring boot·后端·课程设计
不吃香菜学java10 小时前
spring-依赖注入
java·spring boot·后端·spring·ssm
ja哇11 小时前
Spring AOP 详细讲解
java·后端·spring
南部余额11 小时前
Spring Boot 整合 MinIO:封装常用工具类简化文件上传、启动项目初始化桶
java·spring boot·后端·文件上传·工具类·minio·minioutils