Swagger——【SpringBoot集成Swagger、配置Swagger、配置扫描接口、配置API分组】

简介: Swagger——【SpringBoot集成Swagger、配置Swagger、配置扫描接口、配置API分组】

目录


一、swagge简介


二、SpringBoot集成Swagger


三、配置Swagger


四、配置扫描接口


五、配置Swagger开关


六、配置API分组


七、实体配置


八、总结:


一、swagge简介

前后端分离:


       后端︰后端控制层,服务层,数据访问层【后端团队】


       前端:前端控制层,视图层【前端团队】


       前后端通过API进行交互


       前后端相对独立且松耦合


产生问题:前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发


解决方法:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险


前后端分离:       前端测试后端接口:postman

                             后端提供接口,需要实时更新最新的消息及改动!


Swagger


号称世界上最流行的API框架


Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新


直接运行,在线测试API


支持多种语言 (如:Java,PHP等)


官网:API Documentation & Design Tools for Teams | Swagger

image.png

二、SpringBoot集成Swagger

1、新建一个SpringBoot-web项目

2、添加Maven依赖

<!-- 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>

3、编写HelloController,测试确保运行成功!

image.png

4、要使用Swagger,我们需要编写一个配置类-SwaggerConfig来配置 Swagger

@Configuration
@EnableSwagger2        //开启Swagger2
public class SwaggerConfig {
}

5.访问测试 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;

image.png

三、配置Swagger

1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger。

//配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2);
    }

2、可以通过apiInfo()属性配置文档信息

    //配置文档信息
    private ApiInfo apiInfo() {
        Contact contact = new Contact("龍弟", "https://blog.csdn.net/weixin_48838340", "联系人邮箱");
        return new ApiInfo(
                "龍弟的Swagger学习文档", // 标题
                "学习演示如何配置Swagger", // 描述
                "v1.0", // 版本
                "https://blog.csdn.net/weixin_48838340", // 组织链接
                contact, // 联系人信息
                "Apach 2.0 许可", // 许可
                "许可链接", // 许可连接
                new ArrayList<>()// 扩展
        );
    }
}

3、Docket 实例关联上 apiInfo()

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }

4.重启项目

image.png

四、配置扫描接口

   构建Docket时通过select()方法配置怎么扫描接口。

    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                  //any() // 扫描所有,项目中的所有接口都会被扫描到
                 // none() // 不扫描接口
        // withMethodAnnotation通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
        // 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                //path()  过滤什么路径
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    };

五、配置Swagger开关

1、通过enable()方法配置是否启用swagger

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

2.如何动态配置当项目处于test、dev环境时显示swagger

    @Bean
    public Docket docket(Environment environment) {
        // 设置要显示swagger的环境
        Profiles of = Profiles.of("dev", "test");
        // 判断当前是否处于该环境
        // 通过 enable() 接收此参数判断是否要显示
        boolean b = environment.acceptsProfiles(of);
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(b) //配置是否启用Swagger,如果是false,在浏览器将无法访问
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

六、配置API分组

1.如果没有配置分组,默认是default。通过groupName()方法即可配置分组:

    @Bean
    public Docket docket1(Environment environment) {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .groupName("A") ;// 配置分组
        // 省略配置....
    }

2.配置多个分组只需要配置多个docket即可

image.png

3.重启看到下面效果

image.png

七、实体配置

1.新建一个实体类

@ApiModel为类添加注释

@ApiModelProperty为类属性添加注释

image.png

2.只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中:

    //只要我们的接口中,返回值中存在实体类,它就会被扫描到Swagger中
    @PostMapping(value="/user")
    public User getUser(){
        return new User();
    }

3.查看效果

image.png

4.可以给请求的接口配置一些注释

    //Operation接口,不是放在类上的,是方法
    @ApiOperation("龍弟的接口")
    @GetMapping("/hello2")
    public String kuang(@ApiParam("这个名字会被返回")String username){
        return "hello"+username;
    }

image.png

八、总结:


1.我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息


2接口文档实时更新

3.可以在线测试


 Swagger是一个优秀的工具,几乎所有大公司都有使用它


【注意点】在正式发布的时候,需要关闭Swagger! 因为出于安全考虑,同时节省运行的内存!


相关文章
|
16天前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
36 0
|
20天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
31 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
10天前
|
存储 前端开发 JavaScript
springboot中路径默认配置与重定向/转发所存在的域对象
Spring Boot 提供了简便的路径默认配置和强大的重定向/转发机制,通过合理使用这些功能,可以实现灵活的请求处理和数据传递。理解并掌握不同域对象的生命周期和使用场景,是构建高效、健壮 Web 应用的关键。通过上述详细介绍和示例,相信读者能够更好地应用这些知识,优化自己的 Spring Boot 应用。
22 3
|
19天前
|
Java 数据库连接
SpringBoot配置多数据源实战
第四届光学与机器视觉国际学术会议(ICOMV 2025) 2025 4th International Conference on Optics and Machine Vision
48 8
|
16天前
|
Java 数据库连接 数据库
springboot启动配置文件-bootstrap.yml常用基本配置
以上是一些常用的基本配置项,在实际应用中可能会根据需求有所变化。通过合理配置 `bootstrap.yml`文件,可以确保应用程序在启动阶段加载正确的配置,并顺利启动运行。
41 2
|
28天前
|
Java Spring 容器
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
56 3
|
2月前
|
druid Java Maven
|
5月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
301 6
|
5月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
394 4
|
5月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
341 1