Files
tyapi-server/docs/swagger/README.md

254 lines
5.6 KiB
Markdown
Raw Normal View History

2025-07-13 16:36:20 +08:00
# TYAPI Server Swagger 文档
## 📖 概述
本项目使用 [Swaggo](https://github.com/swaggo/swag) 自动生成 Swagger/OpenAPI 文档,提供完整的 API 接口文档和在线测试功能。
## 🚀 快速开始
### 1. 启动服务器
```bash
# 开发模式启动
make dev
# 或者直接运行
go run cmd/api/main.go
```
### 2. 访问文档
启动服务器后,可以通过以下地址访问 API 文档:
- **Swagger UI**: http://localhost:8080/swagger/index.html
- **API 文档信息**: http://localhost:8080/api/docs
- **重定向地址**: http://localhost:8080/docs
## 📝 文档更新
### 自动更新
使用提供的脚本快速更新文档:
```powershell
# Windows PowerShell
.\scripts\update-docs.ps1
# 更新文档并重启服务器
.\scripts\update-docs.ps1 -Restart
# 查看帮助
.\scripts\update-docs.ps1 -Help
```
### 手动更新
```bash
# 使用 Makefile
make docs
# 或者直接使用 swag 命令
swag init -g cmd/api/main.go -o docs/swagger --parseDependency --parseInternal
```
## 🔧 开发指南
### 添加新的 API 接口
1. **在 Handler 方法上添加 Swagger 注释**
```go
// @Summary 接口简短描述
// @Description 接口详细描述
// @Tags 标签分组
// @Accept json
// @Produce json
// @Security Bearer # 如果需要认证
// @Param request body dto.RequestStruct true "请求参数描述"
// @Param id path string true "路径参数描述"
// @Param page query int false "查询参数描述"
// @Success 200 {object} dto.ResponseStruct "成功响应描述"
// @Failure 400 {object} map[string]interface{} "错误响应描述"
// @Router /api/v1/your-endpoint [post]
func (h *YourHandler) YourMethod(c *gin.Context) {
// Handler实现
}
```
2. **为 DTO 结构体添加注释和示例**
```go
// @Description 请求参数描述
type RequestStruct struct {
Name string `json:"name" example:"张三"`
Age int `json:"age" example:"25"`
}
// @Description 响应参数描述
type ResponseStruct struct {
ID string `json:"id" example:"123e4567-e89b-12d3-a456-426614174000"`
Name string `json:"name" example:"张三"`
}
```
3. **重新生成文档**
```bash
make docs
```
### Swagger 注释语法
#### 基础注释
- `@Summary`: 接口摘要(在文档列表中显示)
- `@Description`: 详细描述(支持多行)
- `@Tags`: 标签分组(用于在 UI 中分组显示)
#### 请求/响应格式
- `@Accept`: 接受的内容类型json, xml, plain, html, mpfd, x-www-form-urlencoded
- `@Produce`: 响应的内容类型json, xml, plain, html
#### 安全认证
- `@Security Bearer`: JWT 认证
- `@Security ApiKeyAuth`: API Key 认证
#### 参数定义
- `@Param`: 定义请求参数
- 路径参数:`@Param id path string true "用户ID"`
- 查询参数:`@Param page query int false "页码"`
- 请求体:`@Param request body dto.RequestStruct true "请求参数"`
#### 响应定义
- `@Success`: 成功响应
- `@Failure`: 错误响应
## 📋 API 分组
当前文档按以下标签分组:
### 🔐 用户认证
- 用户注册
- 用户登录(密码/短信验证码)
- 发送验证码
### 👤 用户管理
- 获取用户信息
- 修改密码
### 👨‍💼 管理员认证
- 管理员登录
### 🏢 管理员管理
- 创建管理员
- 更新管理员信息
- 修改管理员密码
- 获取管理员列表
- 获取管理员详情
- 删除管理员
- 获取管理员统计
### 🏢 企业认证
- 创建认证申请
- 上传营业执照
- 获取认证状态
- 获取进度统计
- 提交企业信息
- 发起人脸验证
- 申请合同
- 获取认证详情
- 重试认证步骤
### 💰 钱包管理
- 创建钱包
- 获取钱包信息
- 更新钱包信息
- 钱包充值
- 钱包提现
- 钱包交易
- 获取钱包统计
### 🔑 用户密钥管理
- 创建用户密钥
- 获取用户密钥
- 重新生成访问密钥
- 停用用户密钥
## 🔐 认证说明
### JWT 认证
大部分 API 接口需要 JWT 认证,在 Swagger UI 中:
1. 点击右上角的 "Authorize" 按钮
2. 在 "Bearer" 输入框中输入 JWT Token
3. 点击 "Authorize" 确认
JWT Token 格式:`Bearer <your-jwt-token>`
### 获取 Token
通过以下接口获取 JWT Token
- **用户登录**: `POST /api/v1/users/login-password`
- **用户短信登录**: `POST /api/v1/users/login-sms`
- **管理员登录**: `POST /api/v1/admin/login`
## 🛠️ 故障排除
### 常见问题
1. **文档生成失败**
- 检查 Swagger 注释语法是否正确
- 确保所有引用的类型都已定义
- 检查 HTTP 方法是否正确(必须小写)
2. **模型没有正确显示**
- 确保结构体有正确的 `json` 标签
- 确保包被正确解析
- 使用 `--parseDependency --parseInternal` 参数
3. **认证测试失败**
- 确保安全定义正确
- 检查 JWT Token 格式是否正确
- 确认 Token 未过期
### 调试命令
```bash
# 详细输出生成过程
swag init -g cmd/api/main.go -o docs/swagger --parseDependency --parseInternal -v
# 检查 swag 版本
swag version
# 重新安装 swag
go install github.com/swaggo/swag/cmd/swag@latest
```
## 📚 相关资源
- [Swaggo 官方文档](https://github.com/swaggo/swag)
- [Swagger UI 文档](https://swagger.io/tools/swagger-ui/)
- [OpenAPI 规范](https://swagger.io/specification/)
## 🤝 贡献指南
1. 添加新接口时,请同时添加完整的 Swagger 注释
2. 确保所有参数都有合适的 `example` 标签
3. 使用中文描述,符合项目的中文化规范
4. 更新文档后,请运行 `make docs` 重新生成文档