@Schema 是 Swagger/OpenAPI 规范中用于描述数据模型(如 Java 类、字段等)的注解,主要用在 Springdoc OpenAPI(替代 Swagger UI 的新一代工具)或 Swagger Core 中。它的作用是给 API 文档添加元数据,比如字段的描述、示例值、是否必填等,让生成的接口文档更清晰易懂。
基本作用
@Schema 可以标注在类、字段/属性、方法参数或返回值上,用来定义:
- 字段的名称、描述、数据类型
- 是否必填(required)
- 示例值(example)
- 枚举值(allowableValues)
- 格式(如日期格式 date-time)
- 隐藏字段(不显示在文档中)
pom 依赖
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
访问文档:http://localhost:8080/swagger-ui.html(或 http://localhost:8080/swagger-ui/index.html)
| 属性 | 作用 |
|---|---|
| description | 字段/模型说明 |
| example | 示例值 |
| requiredMode/required | 是否必填 |
| type | 数据类型(如 string、integer,通常自动推断,无需手动写 |
| format | 数据格式(如 date-time、email、uuid) |
| allowableValues | 枚举可选值 |
| defaultValue | 默认值 |
| deprecated | 标记废弃 |
| hidden | 是否在文档隐藏 |
| 注解 | 作用位置 | 作用 |
|---|---|---|
@Schema |
DTO / 字段 | 描述模型结构 |
@Parameter |
Controller 参数 | 描述参数 |
@Operation |
Controller 方法 | 描述接口本身 |
@Tag |
Controller 类 | 分组接口 |
1. 标注 DTO 字段说明
public class UserRegisterReq {
@Schema(description = "手机号", example = "13800138000", requiredMode = Schema.RequiredMode.REQUIRED)
private String phone;
@Schema(description = "用户密码", example = "123456")
private String password;
@Schema(description = "昵称", example = "张三")
private String nickname;
}
2. 标注 Controller 参数
@PostMapping("/user/register")
public void register(
@RequestBody
@Schema(description = "注册请求参数")
UserRegisterReq req
) {
}
3. 标注返回对象
@Schema(description = "用户信息返回对象")
public class UserDTO {
@Schema(description = "用户ID", example = "1001")
private Long id;
@Schema(description = "用户名", example = "tom")
private String username;
}
4. 枚举示例
@Schema(description = "设备状态", allowableValues = {"ONLINE", "OFFLINE", "FAULT"})
private String status;
5. Controller 类
@Tag(name = "用户管理")
@RestController
@RequestMapping("/api/user")
public class UserController {
@Operation(summary = "用户注册", description = "用于新用户注册账号")
@PostMapping("/register")
public void register(@RequestBody UserRegisterReq req) {
}
}
本文为原创内容,作者:闲鹤,原文链接:https://blog.uwenya.cc/1655.html,转载请注明出处。