SpringBoot整合Swagger,让开发更遍历

在这里插入图片描述

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~

在这里插入图片描述

SpringBoot整合Swagger,让开发更遍历


👇


Swagger介绍

Swagger 是一种流行的开源工具集,用于设计、构建、记录和使用 RESTful Web 服务的 API( https://swagger.io/ )。它包含了一系列工具,可以帮助开发人员在开发 API 时更加高效地进行设计、测试和文档编写。下面是 Swagger 的一些主要功能和组件:

  1. API 文档自动生成: Swagger 可以根据代码中的注解自动生成 API 文档。开发人员只需要在代码中添加一些特定的注解,描述 API 的路径、参数、响应等信息,Swagger 就可以自动扫描代码并生成相应的 API 文档。
  2. 可视化 API 文档: Swagger 生成的 API 文档以可视化的形式呈现,包括 API 的路径、HTTP 方法、参数、响应等信息,使开发人员可以清晰地了解 API 的使用方式和接口规范。
  3. 交互式 API 测试工具: Swagger UI 是 Swagger 提供的一个交互式 API 测试工具,可以让开发人员直接在浏览器中测试 API,无需使用额外的工具或插件。通过 Swagger UI,开发人员可以输入参数、发送请求,并查看实际的响应结果,从而快速验证 API 的正确性和可用性。
  4. API 文档的版本控制: Swagger 支持多版本的 API 文档管理,开发人员可以为不同版本的 API 编写不同的文档,并通过 Swagger UI 来方便地切换和查看不同版本的 API。
  5. 集成开发环境支持: Swagger 可以集成到各种常见的集成开发环境(IDE)中,如 Eclipse、IntelliJ IDEA 等,提供了便捷的 API 设计和文档编写功能。
  6. 与多种编程语言和框架的兼容性: Swagger 不仅支持 Java,还支持多种其他编程语言和框架,如 Python、Node.js、Ruby 等,开发人员可以在不同的项目中使用 Swagger 来进行 API 的设计和文档编写。

综合来说,Swagger 提供了一套完整的工具集,帮助开发人员更加高效地设计、构建和文档化 RESTful API,提升了团队协作效率,降低了开发成本,同时也提升了 API 的可读性和可维护性。




SpringBoot整合swagger

1 引入Maven坐标

Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
</dependency>



2 创建一个Swagger配置类

SwaggerConfiguration.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;

/**
 * @author .29.
 * @create 2024-05-13 10:43
 */
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Bean
    public Docket buildDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInfo())
                .select()
                // 要扫描的API(Controller)基础包
                .apis(RequestHandlerSelectors.basePackage("com.heima"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo buildApiInfo() {
        Contact contact = new Contact(".29.","","");
        return new ApiInfoBuilder()
                .title(".29.仿今日头条-平台管理API文档")
                .description(".29.仿今日头条后台api")
                .contact(contact)
                .version("1.0.0").build();
    }
}

让我解释一下这段代码的主要内容:

  1. @Configuration:这个注解表明这是一个配置类,它会在 Spring 应用程序启动时被加载。
  2. @EnableSwagger2:这个注解用于启用 Swagger2 的支持。
  3. @Bean:这个注解表明 buildDocket() 方法将会产生一个 Spring Bean,并将其加入到 Spring 容器中。
  4. buildDocket() 方法:这个方法创建并配置了一个 Docket 对象,用于配置 Swagger 的基本信息和扫描规则。具体来说:
    • 使用 DocumentationType.SWAGGER_2 指定了 Swagger 的文档类型为 Swagger 2.0。
    • 使用 apiInfo(buildApiInfo()) 方法设置 API 文档的基本信息,包括标题、描述、联系人信息和版本号。
    • 使用 select() 方法开始配置 API 选择器,通过 apis(RequestHandlerSelectors.basePackage("com.heima")) 指定了要扫描的 API(Controller) 的基础包路径为 “com.heima”。
    • 使用 paths(PathSelectors.any()) 方法指定了所有路径都应该被包含在 API 文档中。
    • 最后使用 build() 方法来构建 Docket 对象。
  5. buildApiInfo() 方法:这个方法创建并配置了 ApiInfo 对象,用于设置 API 文档的基本信息。具体来说:
    • 创建了一个 Contact 对象,用于设置联系人信息。
    • 使用 ApiInfoBuilder 构建器设置了 API 文档的标题、描述、联系人信息和版本号。
    • 最后使用 build() 方法构建 ApiInfo 对象。

这段代码配置了 Swagger 生成 API 文档的基本信息,并指定了扫描哪些包中的 Controller 类来生成 API 文档。



3 设置Swagger相关功能的自动配置

resources目录下新增文件:resources/META-INF/Spring.factories

在这里插入图片描述

# Spring自动配置相关参数(参数通常是一个以逗号分隔的类名列表,每个类名表示一个自动配置类。)
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.heima.common.swagger.SwaggerConfiguration

在Java类中添加Swagger的注解即可生成Swagger接口文档

访问Swagger文档:http://{你的IP}:{你的项目服务端口}/swagger-ui.html

http://localhost:51801/swagger-ui.html

在这里插入图片描述



Swagger常用注解介绍

@Api:修饰整个类,描述Controller的作用

@ApiOperation:描述一个类的一个方法,或者说一个接口

@ApiParam:单个参数的描述信息

@ApiModel:用对象来接收参数

@ApiModelProperty:用对象接收参数时,描述对象的一个字段

@ApiResponse:HTTP响应其中1个描述

@ApiResponses:HTTP响应整体描述

@ApiIgnore:使用该注解忽略这个API

@ApiError :发生错误返回的信息

@ApiImplicitParam:一个请求参数

@ApiImplicitParams:多个请求参数的描述信息


@ApiImplicitParam属性:

属性取值作用
paramType查询参数类型
path以地址的形式提交数据
query直接跟参数完成自动映射赋值
body以流的形式提交 仅支持POST
header参数在request headers 里边提交
form以form表单的形式提交 仅支持POST
dataType参数的数据类型 只作为标志说明,并没有实际验证
Long
String
name接收参数名
value接收参数的意义描述
required参数是否必填
true必填
false非必填
defaultValue默认值





在这里插入图片描述

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.29.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值