Files
tyapi-server/docs/swagger/README.md
2025-07-13 16:36:20 +08:00

254 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` 重新生成文档