You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
4.6 KiB
167 lines
4.6 KiB
1 week ago
|
# Swagger配置修复总结
|
||
|
|
||
|
## 修复的问题
|
||
|
|
||
|
### 1. Swagger路由路径配置问题
|
||
|
|
||
|
**问题描述:**
|
||
|
- Swagger路由配置不完整,缺少重定向路径
|
||
|
- 用户无法通过多种方式访问Swagger文档
|
||
|
|
||
|
**修复内容:**
|
||
|
- 在 `backend/main.go` 中添加了多个Swagger访问路径:
|
||
|
```go
|
||
|
// Swagger路由配置
|
||
|
app.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||
|
app.GET("/docs", func(c *gin.Context) {
|
||
|
c.Redirect(http.StatusMovedPermanently, "/swagger/index.html")
|
||
|
})
|
||
|
app.GET("/api-docs", func(c *gin.Context) {
|
||
|
c.Redirect(http.StatusMovedPermanently, "/swagger/index.html")
|
||
|
})
|
||
|
```
|
||
|
|
||
|
**访问路径:**
|
||
|
- 主要路径:`http://localhost:8080/swagger/index.html`
|
||
|
- 重定向路径:`http://localhost:8080/docs`
|
||
|
- API文档路径:`http://localhost:8080/api-docs`
|
||
|
|
||
|
### 2. Swagger身份验证配置问题
|
||
|
|
||
|
**问题描述:**
|
||
|
- Swagger文档没有配置身份验证
|
||
|
- 无法在Swagger UI中测试需要认证的API
|
||
|
|
||
|
**修复内容:**
|
||
|
- 在 `backend/main.go` 中添加了身份验证配置:
|
||
|
```go
|
||
|
// @securityDefinitions.apikey BearerAuth
|
||
|
// @in header
|
||
|
// @name Authorization
|
||
|
// @description 请输入 "Bearer " + JWT token,例如: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||
|
```
|
||
|
|
||
|
- 为所有需要认证的API添加了 `@Security BearerAuth` 注释
|
||
|
|
||
|
### 3. 角色路由路径修复
|
||
|
|
||
|
**问题描述:**
|
||
|
- 角色管理路由路径不正确,导致API无法访问
|
||
|
|
||
|
**修复内容:**
|
||
|
- 在 `backend/internal/auth/routes/role_routes.go` 中修复了路由路径:
|
||
|
```go
|
||
|
// 角色管理路由组 - 修复路径配置
|
||
|
roleGroup := router.Group("/auth/roles")
|
||
|
```
|
||
|
|
||
|
### 4. Swagger注释完善
|
||
|
|
||
|
**修复内容:**
|
||
|
- 为角色控制器的方法添加了完整的Swagger注释:
|
||
|
- `CreateRole` - 创建角色
|
||
|
- `UpdateRole` - 更新角色
|
||
|
- `DeleteRole` - 删除角色
|
||
|
- `GetRole` - 获取角色详情
|
||
|
- `ListRoles` - 获取角色列表
|
||
|
|
||
|
- 每个方法都包含了:
|
||
|
- `@Summary` - 接口摘要
|
||
|
- `@Description` - 详细描述
|
||
|
- `@Tags` - 标签分类
|
||
|
- `@Accept` - 接受的数据类型
|
||
|
- `@Produce` - 返回的数据类型
|
||
|
- `@Param` - 参数说明
|
||
|
- `@Success` - 成功响应
|
||
|
- `@Failure` - 失败响应
|
||
|
- `@Security` - 安全认证
|
||
|
- `@Router` - 路由路径
|
||
|
|
||
|
## 使用方法
|
||
|
|
||
|
### 1. 启动后端服务
|
||
|
```bash
|
||
|
cd backend
|
||
|
go run main.go
|
||
|
```
|
||
|
|
||
|
### 2. 访问Swagger文档
|
||
|
- 主要地址:http://localhost:8080/swagger/index.html
|
||
|
- 重定向地址:http://localhost:8080/docs
|
||
|
|
||
|
### 3. 测试API流程
|
||
|
|
||
|
#### 步骤1:获取验证码
|
||
|
1. 在Swagger UI中找到 `/api/auth/captcha` 接口
|
||
|
2. 点击 "Try it out"
|
||
|
3. 点击 "Execute"
|
||
|
4. 复制返回的验证码ID和图片
|
||
|
|
||
|
#### 步骤2:用户登录
|
||
|
1. 找到 `/api/auth/login` 接口
|
||
|
2. 点击 "Try it out"
|
||
|
3. 输入测试账号:
|
||
|
```json
|
||
|
{
|
||
|
"username": "admin",
|
||
|
"password": "admin123",
|
||
|
"captcha": "验证码",
|
||
|
"captcha_id": "验证码ID"
|
||
|
}
|
||
|
```
|
||
|
4. 点击 "Execute"
|
||
|
5. 复制返回的 `access_token`
|
||
|
|
||
|
#### 步骤3:配置身份验证
|
||
|
1. 点击Swagger UI右上角的 "Authorize" 按钮
|
||
|
2. 在输入框中输入:`Bearer <your-access-token>`
|
||
|
3. 点击 "Authorize"
|
||
|
|
||
|
#### 步骤4:测试需要认证的API
|
||
|
现在可以测试所有需要认证的API:
|
||
|
- `/api/auth/roles` - 角色管理相关接口
|
||
|
- 其他需要认证的接口
|
||
|
|
||
|
## 测试脚本
|
||
|
|
||
|
创建了 `test-swagger.ps1` 脚本来验证修复效果:
|
||
|
|
||
|
```powershell
|
||
|
# 运行测试脚本
|
||
|
.\test-swagger.ps1
|
||
|
|
||
|
# 如果需要启动后端服务
|
||
|
.\test-swagger.ps1 -StartBackend
|
||
|
```
|
||
|
|
||
|
## 验证结果
|
||
|
|
||
|
### ✅ 已修复的问题
|
||
|
1. **Swagger路由配置** - 多个访问路径正常工作
|
||
|
2. **身份验证配置** - Swagger UI支持Bearer Token认证
|
||
|
3. **API路由路径** - 角色管理API路径正确
|
||
|
4. **Swagger注释** - 所有API都有完整的文档注释
|
||
|
|
||
|
### 🔧 可用的功能
|
||
|
1. **无需认证的API**:
|
||
|
- `/api/auth/captcha` - 获取验证码
|
||
|
- `/api/auth/login` - 用户登录
|
||
|
- `/api/auth/roles/test/*` - 测试模式角色管理
|
||
|
|
||
|
2. **需要认证的API**:
|
||
|
- `/api/auth/roles/*` - 正式角色管理
|
||
|
- 其他需要JWT认证的接口
|
||
|
|
||
|
### 📝 注意事项
|
||
|
1. 测试模式的路由(`/api/auth/roles/test/*`)不需要认证
|
||
|
2. 正式模式的路由(`/api/auth/roles/*`)需要JWT认证
|
||
|
3. 在Swagger UI中必须先配置Authorize才能测试需要认证的API
|
||
|
4. 建议先使用测试模式验证API功能,再使用正式模式测试认证流程
|
||
|
|
||
|
## 下一步建议
|
||
|
|
||
|
1. **前端集成**:将认证服务集成到前端应用中
|
||
|
2. **错误处理**:完善API错误处理和响应格式
|
||
|
3. **权限控制**:实现基于角色的权限控制
|
||
|
4. **API测试**:编写自动化API测试用例
|