# Swagger API 文档使用说明

## 📖 概述

本项目已集成 Swagger/OpenAPI 3.0，提供交互式的 API 文档界面，方便开发者和测试人员查看和测试 API 接口。

## 🚀 访问地址

启动应用后，可以通过以下地址访问 Swagger 文档：

- **Swagger UI 界面**: http://localhost:8080/swagger-ui.html
- **OpenAPI JSON**: http://localhost:8080/api-docs
- **OpenAPI YAML**: http://localhost:8080/api-docs.yaml

## 📋 功能特性

### 1. 交互式文档
- 在线查看所有 API 接口
- 直接在浏览器中测试接口
- 支持请求参数验证
- 实时查看响应结果

### 2. 接口分组
- **管理员账户管理**: `/api/admin/accounts` 相关接口
- **用户账户管理**: `/api/users` 相关接口

### 3. 详细文档
- 接口描述和用途说明
- 请求参数详细说明
- 响应数据结构
- 错误码说明

## 🔧 配置说明

### 配置文件
```yaml
# application.yml
springdoc:
  api-docs:
    path: /api-docs
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
    doc-expansion: none
    disable-swagger-default-url: true
    display-request-duration: true
  packages-to-scan: com.gameplatform.server.controller
```

### 配置参数说明
- `tags-sorter: alpha`: 按字母顺序排序标签
- `operations-sorter: alpha`: 按字母顺序排序操作
- `doc-expansion: none`: 默认折叠所有接口
- `display-request-duration: true`: 显示请求耗时

## 📝 使用示例

### 1. 查看接口列表
1. 打开 http://localhost:8080/swagger-ui.html
2. 选择对应的接口分组（如"管理员账户管理"）
3. 展开需要查看的接口

### 2. 测试接口
1. 点击接口右侧的"Try it out"按钮
2. 填写请求参数
3. 点击"Execute"执行请求
4. 查看响应结果

### 3. 复制接口信息
每个接口都提供了以下信息：
- **cURL 命令**: 可直接复制到终端执行
- **请求 URL**: 完整的请求地址
- **请求头**: 包含认证信息等
- **请求体**: JSON 格式的请求数据
- **响应示例**: 成功和失败的响应示例

## 🔐 认证说明

### Bearer Token 认证
对于需要认证的接口，在 Swagger UI 中：
1. 点击右上角的"Authorize"按钮
2. 在 "Value" 字段中输入 JWT Token
3. 格式：`Bearer your-jwt-token`
4. 点击"Authorize"确认

### 获取 Token
1. 使用登录接口获取 JWT Token
2. 复制响应中的 `accessToken` 字段
3. 在 Swagger UI 中配置认证

## 📊 接口文档结构

### 管理员账户管理接口
```
POST   /api/admin/accounts          # 创建账户
GET    /api/admin/accounts          # 获取账户列表
GET    /api/admin/accounts/{id}     # 获取账户详情
PATCH  /api/admin/accounts/{id}     # 更新账户
POST   /api/admin/accounts/{id}/enable   # 启用账户
POST   /api/admin/accounts/{id}/disable  # 禁用账户
POST   /api/admin/accounts/{id}/reset-password  # 重置密码
```

### 用户账户管理接口
```
POST   /api/users                   # 创建用户
GET    /api/users                   # 获取用户列表
GET    /api/users/{id}              # 获取用户详情
PUT    /api/users/{id}              # 更新用户
POST   /api/users/{id}/enable       # 启用用户
POST   /api/users/{id}/disable      # 禁用用户
```

## 🎯 最佳实践

### 1. 开发阶段
- 使用 Swagger UI 快速测试接口
- 验证请求参数和响应格式
- 调试认证和权限问题

### 2. 测试阶段
- 导出 OpenAPI 规范文件
- 使用 Postman 等工具导入接口
- 编写自动化测试用例

### 3. 文档维护
- 及时更新接口描述
- 添加详细的参数说明
- 提供完整的示例数据

## 🔧 自定义配置

### 添加新的接口分组
```java
@Tag(name = "新功能模块", description = "新功能模块的接口说明")
@RestController
@RequestMapping("/api/new-feature")
public class NewFeatureController {
    // 接口实现
}
```

### 自定义接口描述
```java
@Operation(summary = "接口标题", description = "详细的接口描述")
@Parameter(description = "参数说明")
public ResponseEntity<?> methodName(@RequestParam String param) {
    // 实现逻辑
}
```

## 📚 相关资源

- [OpenAPI 3.0 规范](https://swagger.io/specification/)
- [SpringDoc 官方文档](https://springdoc.org/)
- [Swagger UI 配置选项](https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/)

## 🆘 常见问题

### Q: 无法访问 Swagger UI
A: 检查应用是否正常启动，确认端口 8080 未被占用

### Q: 接口显示不完整
A: 确认控制器类在 `com.gameplatform.server.controller` 包下

### Q: 认证失败
A: 检查 JWT Token 是否有效，格式是否正确

### Q: 参数验证失败
A: 查看接口文档中的参数要求，确保数据格式正确
