当前位置: 首页 > news >正文

Swagger 笔记

一、Swagger 是什么?

Swagger‌ 是一套围绕 ‌OpenAPI 规范‌ 构建的开源工具集,主要用于 ‌API 的设计、构建、文档化和测试‌。其核心组件包括:

  • Swagger UI‌:可视化 API 文档界面,支持在线调试接口
  • Swagger Editor‌:基于浏览器的 API 设计工具
  • Swagger Codegen‌:根据 API 定义生成客户端/服务端代码

二、Swagger 的核心价值

场景作用
前后端协作提供实时更新的 API 文档,减少沟通成本
接口调试通过 Swagger UI 直接发送请求,验证接口逻辑
自动化测试结合测试框架生成测试用例
API 管理记录接口版本、参数规则等元数据

三、Spring Boot 集成 Swagger 注解

1. 基础配置步骤

1️⃣ 添加依赖(Maven):

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

2️⃣ 配置类示例:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}


2. 核心注解详解

① @Api - 类级别

@Api(tags = "用户管理模块", 
     description = "包含用户注册、登录、信息查询等功能")
@RestController
@RequestMapping("/users")
public class UserController { ... }

参数说明‌:

  • tags:接口分组名称(建议英文)
  • description:模块功能描述

② @ApiOperation - 方法级别

@ApiOperation(
    value = "创建新用户",
    notes = "需提供用户名、密码等基本信息",
    response = UserVO.class
)
@PostMapping
public ResponseEntity<UserVO> createUser(@RequestBody UserDTO dto) { ... }

参数说明‌:

  • value:接口简要说明(显示在接口列表)
  • notes:详细说明(点击接口后展开)
  • response:定义返回对象类型

③ @ApiModel - 数据模型类

@ApiModel(description = "用户数据传输对象")
public class UserDTO {
    @ApiModelProperty(value = "用户名", required = true, example = "john_doe")
    private String username;
    
    @ApiModelProperty(value = "密码", required = true, example = "P@ssw0rd!", hidden = true)
    private String password;
}

参数说明‌:

  • required:是否必填(默认false
  • example:示例值
  • hidden:隐藏字段(不显示在文档)

④ @ApiParam - 参数级别

@GetMapping("/{id}")
public UserVO getUser(
    @ApiParam(value = "用户ID", required = true, example = "123") 
    @PathVariable Long id) { ... }

 


四、补充说明

  1. 版本兼容性‌:
    SpringFox 3.x 需要 Spring Boot 2.6+,旧项目建议使用 2.9.2 版本

  2. 生产环境安全‌:
    通过 @Profile("dev") 限制 Swagger 仅在开发环境启用

  3. 扩展文档‌:
    使用 @ApiImplicitParams 描述非实体类参数

  4. 全局配置‌:
    通过 Docket.globalResponseMessage() 定义统一响应格式


五、最佳实践

  • 文档规范‌:要求所有接口必须添加 @ApiOperation 和 @ApiModelProperty
  • 参数验证‌:结合 @NotNull 等校验注解与 @ApiModelProperty(required=true)
  • 版本控制‌:通过 Docket.groupName() 实现多版本 API 共存

通过合理使用 Swagger 注解,可显著提升 API 的可维护性和团队协作效率。

相关文章:

  • Centos 7 安装VNC服务
  • C# WinForms 中的回调:从性能到技术层面的全面解析
  • HTTP代理IP技术详解及在Web开发中的应用
  • 深入解析MySQL存储引擎:从InnoDB到MyISAM的技术全景
  • 单页响应式 图片懒加载HTML页面
  • 2025年- G23-Lc97-104.二叉树的最大深度-java版(递归调用左右子树)
  • 基于Python编程语言实现“机器学习”,用于车牌识别项目
  • 林阳域管理系统功能简介
  • Oracle 数据库安全评估(DBSAT)简明过程
  • Java 大视界 -- Java 大数据在智能医疗远程会诊与专家协作中的技术支持(146)
  • Python在数据科学中的应用:完整指南
  • 【高并发内存池】第三弹---构建Central Cache的全方位指南——从整体设计到核心实现
  • 《C++11 基于CAS无锁操作的atomic原子类型》
  • 头歌 JAVA 桥接模式实验
  • UI数据处理新隐私保护:确保用户新信息安全
  • 固定公网 IP
  • 【浙大PTA:L1系列题目】
  • NFS 安装与测试
  • 如何在SQL中高效使用聚合函数、日期函数和字符串函数:实用技巧与案例解析
  • 001 你好LabVIEW
  • 牛市早报|持续推进城市更新行动意见印发,证监会强化上市公司募资监管
  • 温州通报“一母亲殴打女儿致其死亡”:嫌犯已被刑拘
  • 南京江宁区市监局通报:盒马一批次猕猴桃检出膨大剂超标
  • 南方降水频繁暴雨连连,北方高温再起或现40°C酷热天气
  • 时隔3年俄乌直接谈判今日有望重启:谁参加,谈什么
  • 泽连斯基启程前往土耳其