Swagger 配置指南——快速构建 API 文档

在现代 Web 开发中,API 文档是前后端协作的重要桥梁。Swagger 是一个强大的工具,可以帮助我们自动生成 API 文档,并提供交互式的 API 测试界面。本文将详细介绍如何在 Spring Boot 项目中配置 Swagger,并生成美观且实用的 API 文档。


1. Swagger 简介

Swagger 是一套围绕 OpenAPI 规范构建的工具,用于设计、构建、记录和使用 RESTful API。通过 Swagger,开发者可以:

  • 自动生成 API 文档。
  • 提供交互式的 API 测试界面。
  • 支持多种语言和框架(如 Java、Python、Node.js 等)。

2. Spring Boot 集成 Swagger

2.1 添加依赖

首先,在 pom.xml 中添加 Swagger 的依赖:

xml 复制代码
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
  • springfox-swagger2:核心库,用于生成 API 文档。
  • springfox-swagger-ui:提供交互式的 API 测试界面。

2.2 配置 Swagger

在 Spring Boot 项目中,创建一个配置类来启用 Swagger:

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.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)
                .apiInfo(new ApiInfoBuilder()
                        .title("API 文档")
                        .description("Spring Boot 集成 Swagger 示例")
                        .version("1.0")
                        .build())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) // 指定扫描的包
                .paths(PathSelectors.any())
                .build();
    }
}
  • @EnableSwagger2:启用 Swagger。
  • Docket:配置 Swagger 的核心 Bean。
  • apiInfo:设置 API 文档的基本信息,如标题、描述、版本等。
  • apis:指定扫描的控制器包路径。
  • paths:指定需要生成文档的 API 路径。

2.3 启动项目并访问 Swagger UI

启动 Spring Boot 项目后,访问以下 URL 即可查看 Swagger UI:

bash 复制代码
http://localhost:8080/swagger-ui.html
  • Swagger UI:提供交互式的 API 测试界面,支持在线测试 API。

3. Swagger 注解详解

Swagger 提供了一系列注解,用于增强 API 文档的可读性和实用性。

3.1 @Api
  • 作用:标注在控制器类上,用于描述整个控制器。

  • 示例

    java 复制代码
    @Api(tags = "用户管理")
    @RestController
    @RequestMapping("/user")
    public class UserController {
        // ...
    }
3.2 @ApiOperation
  • 作用:标注在方法上,用于描述 API 的功能。

  • 示例

    java 复制代码
    @ApiOperation(value = "获取用户信息", notes = "根据用户 ID 获取用户信息")
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        // ...
    }
3.3 @ApiParam
  • 作用:标注在方法参数上,用于描述参数的含义。

  • 示例

    java 复制代码
    @ApiOperation(value = "更新用户信息")
    @PutMapping("/{id}")
    public void updateUser(
            @ApiParam(value = "用户 ID", required = true) @PathVariable Long id,
            @ApiParam(value = "用户信息", required = true) @RequestBody User user) {
        // ...
    }
3.4 @ApiModel@ApiModelProperty
  • 作用:标注在实体类上,用于描述模型及其属性。

  • 示例

    java 复制代码
    @ApiModel(description = "用户实体")
    public class User {
        @ApiModelProperty(value = "用户 ID")
        private Long id;
    
        @ApiModelProperty(value = "用户名", required = true)
        private String username;
    
        // getters and setters
    }

4. Swagger 高级配置

4.1 分组配置

如果项目中有多个模块,可以为每个模块配置不同的 Swagger 分组:

java 复制代码
@Bean
public Docket userApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("用户管理")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo.user"))
            .paths(PathSelectors.any())
            .build();
}

@Bean
public Docket orderApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("订单管理")
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo.order"))
            .paths(PathSelectors.any())
            .build();
}
4.2 全局参数配置

如果需要为所有 API 添加全局参数(如 Token),可以配置如下:

java 复制代码
@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .globalOperationParameters(Collections.singletonList(
                    new ParameterBuilder()
                            .name("Authorization")
                            .description("访问令牌")
                            .modelRef(new ModelRef("string"))
                            .parameterType("header")
                            .required(false)
                            .build()
            ))
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
            .paths(PathSelectors.any())
            .build();
}

5. 总结

通过 Swagger,我们可以快速生成美观且实用的 API 文档,并支持在线测试 API。本文详细介绍了如何在 Spring Boot 项目中配置 Swagger,并讲解了常用的 Swagger 注解和高级配置。希望本文能帮助你更好地使用 Swagger,提升开发效率!

相关推荐
阳光是sunny7 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦7 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny7 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
皮皮林5517 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
努力的小雨8 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康8 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
腾渊信息科技公司9 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
IT_陈寒10 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
段一凡-华北理工大学10 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
码事漫谈11 小时前
1999年的电商前夜和2026年的AI前夜 历史押韵但从不重复
后端