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

w笔记--Swagger

遵循 OpenAPI 规范的 API 文档生成工具,支持接口涉违纪、文档化和测试。

自动生成文档、提供交互时测试(Swagger UI)、同步代码与文档。

依赖配置(添加 springdoc-openapi 依赖(OpenAPI 3.0 支持):)

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.2.0</version>
</dependency>

配置类

@Configuration
public class OpenApiConfig {@Beanpublic OpenAPI customOpenAPI() {return new OpenAPI().info(new Info().title("用户服务 API").version("1.0.0").description("用户管理相关接口文档"));}
}

访问文档

Swagger UI:http://localhost:8080/swagger-ui.html

OpenAPI 规范 JSON:http://localhost:8080/v3/api-docs

核心注解(OpenAPI 3.0)

1.接口相关注解

@Tag 对接口进行分组

@Tag(name = "用户管理", description = "用户增删改查接口")

@Operation 描述单个接口的操作

@Operation(summary = "查询用户列表",description = "根据条件分页查询用户信息,支持姓名模糊搜索"
)

@Parameter 定义接口参数(路径、查询、请求体等)

@Parameter(name = "userDTO",description = "用户创建数据",required = true, //true为必填项content = @Content(schema = @Schema(implementation = UserCreateDTO.class))
)

2.数据模型注解

@Schema

2.1基本类型 :描述 实体类 字段类型、示例、约束

@Data
@Schema(description = "用户信息响应对象")
public class UserVO {@Schema(description = "用户ID", example = "123", required = true)private Long id;@Schema(description = "用户名", example = "Alice", maxLength = 20)private String name;@Schema(description = "年龄", example = "25", minimum = "1", maximum = "150")private Integer age;
}

2.2 复杂结构

2.2.1 数组(List)

@Schema(type = "array",items = @Schema(implementation = UserVO.class),description = "用户列表"
)
private List<UserVO> users;

2.2.2 映射(Map)

@Schema(type = "object",additionalProperties = @Schema.AdditionalPropertiesValue(schema = @Schema(implementation = UserVO.class)),description = "用户映射(ID -> 用户信息)"
)
private Map<Long, UserVO> userMap;

2.2.3 嵌套对象

@Data
@Schema(description = "订单信息")
public class OrderVO {@Schema(description = "订单ID")private Long orderId;@Schema(description = "用户信息")private UserVO user; // 嵌套 UserVO@Schema(description = "商品列表")private List<ProductVO> products; // 嵌套数组
}

http://www.xdnf.cn/news/9416.html

相关文章:

  • 开源即战力!从科研到商用:Hello Robot 移动操作机器人Stretch 3多模态传感融合(RGB-D/激光/力矩)控制方案
  • 仿真环境中机器人抓取与操作 - 上手指南
  • java常用工具类:实现文件下载
  • AD-PCB--电子设计学习思路 DAY 1
  • 从零到一:影刀RPA学习者的破局之路
  • 分布式系统中的消息幂等性与流量控制(一)
  • Vue组件技术全解析大纲
  • mediapipe标注视频姿态关键点(基础版加进阶版)
  • Navicat 17 SQL 预览时表名异常右键表名,点击设计表->SQL预览->另存为的SQL预览时,表名都是 Untitled。
  • 【Elasticsearch】scripted_upsert
  • 小白成长之路-计算机网络(四)
  • BUG调试案例十二:LM5117输出电压纹波偏大问题案例
  • 初识 ProtoBuf
  • 破解Docker镜像下载难题
  • 永磁同步电机控制算法--变结构PI调节器
  • 面向测试编程——SmartRefreshLayout的测试case
  • Ubuntu系统开放 45876/tcp 端口
  • Cookie、Session和Token鉴权
  • Python实用脚本:可视化分割txt标签数据
  • TWTSolutions水厂污水厂设计计算软件:化学强化絮凝单元
  • leetcode:1688. 比赛中的配对次数(python3解法,数学相关算法题)
  • ubuntu安装tigervnc
  • Python优雅执行SSH命令:10种方法+虚拟环境深度实践
  • 使用 mysqldump 获取 MySQL 表的完整创建 DDL
  • Spring AI(一)
  • windows 环境中 python连接到达梦库,及相关问题解决办法
  • TDengine 中的存储配置
  • 线程池详解:原理、使用与优化
  • 78. Subsets和90. Subsets II
  • Linux:基础指令与内涵理解(下)与权限