Spring Boot 与 Swagger 文档生成!

举报
bug菌 发表于 2025/07/16 15:42:51 2025/07/16
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8 🌟 前言在现代开发中,API 文档的重要性不言而喻。尤其是在微服务架...

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

🌟 前言

在现代开发中,API 文档的重要性不言而喻。尤其是在微服务架构中,每个服务提供的 RESTful API 需要清晰的文档来方便其他开发者使用。Swagger 是目前最流行的 API 文档生成工具,它能够自动生成可交互的 API 文档,方便开发者进行接口调试和测试。

本文将深入探讨如何使用 Spring Boot 与 Swagger 自动生成 API 文档,集成 Springfox Swagger,生成 RESTful API 文档,并利用 Swagger UI 进行 API 测试与调试。

🎯 使用 Spring Boot 与 Swagger 自动生成 API 文档

1️⃣ 环境准备

在 Spring Boot 项目中集成 Swagger,最重要的步骤是添加相关的依赖。我们使用 Springfox 作为 Spring Boot 的 Swagger 集成库,它非常简洁且易于配置。

首先,在 pom.xml 文件中添加 Springfox Swagger 相关的依赖:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

这个依赖会为项目引入 Swagger 所需的所有依赖项,包括文档生成工具和 UI 工具。

2️⃣ 配置 Swagger

接下来,我们需要在项目中配置 Swagger 以启用 API 文档生成功能。可以创建一个 SwaggerConfig 配置类,在其中设置生成文档所需的相关信息。

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) // 扫描控制器包
                .paths(PathSelectors.any()) // 设置哪些路径需要生成文档
                .build()
                .apiInfo(new ApiInfoBuilder()
                        .title("Spring Boot API")
                        .description("Spring Boot 项目的 RESTful API 文档")
                        .version("1.0.0")
                        .build());
    }
}
  • @EnableSwagger2 注解启用 Swagger 功能。
  • Docket 是 Swagger 的核心配置类,它配置了文档生成的一些基本信息。我们通过 .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) 来指定需要扫描的包,确保只有该包下的控制器会生成文档。
  • .paths(PathSelectors.any()) 表示对所有 API 路径都生成文档。你也可以指定某些路径来限制文档生成的范围。

3️⃣ 创建 REST API 控制器

创建一个简单的 API 控制器,供 Swagger 生成文档。控制器中包含两个 GET 请求,一个返回 “Hello” 字符串,另一个返回 “Goodbye” 字符串。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot with Swagger!";
    }

    @GetMapping("/goodbye")
    public String goodbye() {
        return "Goodbye, Spring Boot with Swagger!";
    }
}

在这个控制器中,我们定义了两个简单的 API 接口。当你访问 /api/hello 时,返回 "Hello, Spring Boot with Swagger!";而访问 /api/goodbye 时,返回 "Goodbye, Spring Boot with Swagger!"

4️⃣ 运行并访问 Swagger 文档

启动 Spring Boot 项目后,访问以下 URL 以查看自动生成的 Swagger 文档:

http://localhost:8080/swagger-ui/

这会打开 Swagger UI 页面,列出所有 API 接口。你将能够看到 ApiController 中定义的 /hello/goodbye 接口,并且 Swagger UI 会自动生成它们的描述、请求参数、返回结果等信息。

⚡ 集成 Spring Boot 与 Springfox Swagger 进行 RESTful API 文档的生成

1️⃣ 添加注解来丰富文档

Swagger 提供了丰富的注解来帮助开发者精确描述 API 的功能和参数。这些注解帮助生成的文档更加详细和易于理解。常用的注解包括:

  • @Api: 用于标记类,描述控制器的作用。
  • @ApiOperation: 用于标记方法,描述接口操作的功能。
  • @ApiParam: 用于方法参数,描述参数的详细信息。

以下是一个使用了 Swagger 注解的控制器示例:

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Api(tags = "Greeting API")
@RestController
@RequestMapping("/api")
public class ApiController {

    @ApiOperation(value = "获取问候信息", notes = "根据名字返回问候语")
    @GetMapping("/greet")
    public String greet(
            @ApiParam(value = "用户的名字", required = true) @RequestParam String name) {
        return "Hello, " + name + "!";
    }
}

在这段代码中,我们为 ApiController 类和其中的 greet 方法添加了 Swagger 注解:

  • @Api 描述控制器的作用(这里是 “Greeting API”)。
  • @ApiOperation 描述 greet 方法的功能,并且提供了一个备注。
  • @ApiParam 描述了 name 参数的含义,并且标明它是必需的。

Swagger UI 将根据这些注解自动生成详细的 API 文档。

2️⃣ 支持不同 API 版本的文档

在一些项目中,我们可能需要支持多个版本的 API。Swagger 支持为不同版本的 API 生成独立的文档。你可以通过 Docket 配置多个版本的文档,并通过 groupName 来区分它们。

@Bean
public Docket apiV1() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("v1")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
            .paths(PathSelectors.ant("/v1/**"))
            .build()
            .apiInfo(new ApiInfoBuilder()
                    .title("API V1")
                    .description("API V1 文档")
                    .version("1.0")
                    .build());
}

@Bean
public Docket apiV2() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("v2")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
            .paths(PathSelectors.ant("/v2/**"))
            .build()
            .apiInfo(new ApiInfoBuilder()
                    .title("API V2")
                    .description("API V2 文档")
                    .version("2.0")
                    .build());
}

在这里,我们创建了两个 Docket 实例,一个用于 v1 版本,另一个用于 v2 版本。通过 groupName 属性,我们为不同版本的 API 生成独立的文档。

🔥 使用 Swagger UI 和 Spring Boot 进行 API 测试与调试

1️⃣ 使用 Swagger UI 进行交互式测试

Swagger UI 提供了一个用户友好的界面,允许开发者和测试人员直接在浏览器中执行 API 请求并查看响应。Swagger UI 为每个接口提供了 Try it out 按钮,用户可以输入参数并直接发送请求。

例如,在 /api/greet 接口的文档中,Swagger UI 会显示 name 参数的输入框,用户可以输入一个名字并点击 “Execute” 按钮,Swagger UI 会发送请求并显示返回的结果。

2️⃣ API 安全与授权支持

在实际开发中,API 通常需要安全性配置,例如使用 OAuth 2.0、Basic Auth 或 Token 认证。Swagger 提供了对这些安全机制的支持,可以在生成的文档中添加认证信息。

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ApiController {

    @ApiOperation(value = "获取用户信息", security = "bearerAuth")
    @GetMapping("/user")
    public String getUser() {
        return "User information";
    }
}

通过 @ApiOperation 注解的 security 属性,Swagger UI 会显示 Bearer Token 输入框,允许用户在测试时提供 Token。

📝 小结

通过本章的学习,我们掌握了如何将 Swagger 集成到 Spring Boot 项目中,并利用 Swagger 自动生成 RESTful API 文档。Swagger 提供了简单易用的注解,可以让我们快速为 API 接口添加描述信息。通过 Swagger UI,我们能够以交互式的方式测试和调试接口,极大提高了开发效率。

🚀 总结

Swagger 是开发 RESTful API 时不可或缺的工具,它不仅能帮助我们自动生成清晰、易懂的 API 文档,还提供了强大的 UI 支持,方便开发者和测试人员进行 API 测试与调试。结合 Spring Boot,Swagger 能够轻松为项目生成文档,并提供交互式测试功能,帮助团队快速理解并使用 API。如果你还没有在项目中使用 Swagger,赶紧动手试一试吧!

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌(全网一个名),CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。