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.
172 lines
4.6 KiB
172 lines
4.6 KiB
3 days ago
|
# Controller API描述规范
|
||
|
|
||
|
## 概述
|
||
|
为了生成准确的路由描述信息,所有Controller方法必须遵循以下注释规范。
|
||
|
|
||
|
## 规范要求
|
||
|
|
||
|
### 1. 必须包含的注释
|
||
|
每个Controller方法必须包含以下Swagger注释:
|
||
|
|
||
|
```go
|
||
|
// MethodName 方法功能描述
|
||
|
// @Summary 简短的中文描述
|
||
|
// @Description 详细的中文描述
|
||
|
// @Tags 标签名称
|
||
|
// @Accept json
|
||
|
// @Produce json
|
||
|
// @Param 参数描述
|
||
|
// @Success 200 {object} response.Response
|
||
|
// @Router /api/path [method]
|
||
|
func (c *Controller) MethodName(ctx *gin.Context) {
|
||
|
// 实现代码
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### 2. 描述规范
|
||
|
|
||
|
#### @Summary 规范
|
||
|
- 必须使用中文
|
||
|
- 简洁明了,不超过20个字符
|
||
|
- 准确描述方法功能
|
||
|
|
||
|
**示例:**
|
||
|
```go
|
||
|
// @Summary 获取用户列表
|
||
|
// @Summary 创建新用户
|
||
|
// @Summary 更新用户信息
|
||
|
// @Summary 删除用户
|
||
|
```
|
||
|
|
||
|
#### @Description 规范
|
||
|
- 必须使用中文
|
||
|
- 详细描述方法功能、参数说明、返回值说明
|
||
|
- 包含业务逻辑说明
|
||
|
|
||
|
**示例:**
|
||
|
```go
|
||
|
// @Description 获取分页用户列表,支持按用户名、状态等条件筛选
|
||
|
// @Description 创建新用户,自动生成用户ID,设置默认密码策略
|
||
|
// @Description 更新用户基本信息,包括用户名、邮箱、状态等
|
||
|
// @Description 删除用户,同时删除用户相关的角色关联
|
||
|
```
|
||
|
|
||
|
### 3. 路径规范
|
||
|
|
||
|
#### 路径命名规范
|
||
|
- 使用RESTful风格
|
||
|
- 资源名使用复数形式
|
||
|
- 路径参数使用`:id`格式
|
||
|
|
||
|
**示例:**
|
||
|
```go
|
||
|
// @Router /api/auth/users [get] // 获取用户列表
|
||
|
// @Router /api/auth/users [post] // 创建用户
|
||
|
// @Router /api/auth/users/:id [get] // 获取用户详情
|
||
|
// @Router /api/auth/users/:id [put] // 更新用户
|
||
|
// @Router /api/auth/users/:id [delete] // 删除用户
|
||
|
```
|
||
|
|
||
|
### 4. 标签规范
|
||
|
|
||
|
#### @Tags 规范
|
||
|
- 使用中文标签
|
||
|
- 按功能模块分组
|
||
|
- 保持一致性
|
||
|
|
||
|
**示例:**
|
||
|
```go
|
||
|
// @Tags 用户管理
|
||
|
// @Tags 角色管理
|
||
|
// @Tags 权限管理
|
||
|
// @Tags 认证管理
|
||
|
```
|
||
|
|
||
|
## 实施步骤
|
||
|
|
||
|
### 阶段1:现有Controller改造
|
||
|
1. 检查所有现有Controller方法
|
||
|
2. 补充缺失的@Summary和@Description注释
|
||
|
3. 统一标签命名
|
||
|
|
||
|
### 阶段2:路由描述生成优化
|
||
|
1. 修改RouteSyncService,优先从Swagger注释提取描述
|
||
|
2. 实现注释解析逻辑
|
||
|
3. 回退机制:注释解析失败时使用原有逻辑
|
||
|
|
||
|
### 阶段3:代码审查规范
|
||
|
1. 新增Controller方法必须包含完整注释
|
||
|
2. 代码审查时检查注释完整性
|
||
|
3. 建立自动化检查工具
|
||
|
|
||
|
## 示例代码
|
||
|
|
||
|
### 完整的Controller方法示例
|
||
|
```go
|
||
|
// ListUsers 获取用户列表
|
||
|
// @Summary 获取用户列表
|
||
|
// @Description 获取分页用户列表,支持按用户名、状态等条件筛选,返回用户基本信息和关联角色
|
||
|
// @Tags 用户管理
|
||
|
// @Accept json
|
||
|
// @Produce json
|
||
|
// @Param page query int false "页码" default(1)
|
||
|
// @Param pageSize query int false "每页数量" default(10)
|
||
|
// @Param username query string false "用户名筛选"
|
||
|
// @Param status query string false "状态筛选"
|
||
|
// @Success 200 {object} response.Response{data=map[string]interface{}} "用户列表"
|
||
|
// @Failure 400 {object} response.Response "请求参数错误"
|
||
|
// @Failure 500 {object} response.Response "服务器内部错误"
|
||
|
// @Router /api/auth/admin/users [get]
|
||
|
func (c *UserController) ListUsers(ctx *gin.Context) {
|
||
|
// 实现代码
|
||
|
}
|
||
|
|
||
|
// CreateUser 创建用户
|
||
|
// @Summary 创建新用户
|
||
|
// @Description 创建新用户,自动生成用户ID,设置默认密码策略,支持批量创建
|
||
|
// @Tags 用户管理
|
||
|
// @Accept json
|
||
|
// @Produce json
|
||
|
// @Param user body model.CreateUserRequest true "用户创建信息"
|
||
|
// @Success 201 {object} response.Response{data=model.User} "创建成功"
|
||
|
// @Failure 400 {object} response.Response "请求参数错误"
|
||
|
// @Failure 409 {object} response.Response "用户已存在"
|
||
|
// @Failure 500 {object} response.Response "服务器内部错误"
|
||
|
// @Router /api/auth/admin/users [post]
|
||
|
func (c *UserController) CreateUser(ctx *gin.Context) {
|
||
|
// 实现代码
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## 检查清单
|
||
|
|
||
|
### 新增方法检查
|
||
|
- [ ] 包含@Summary注释
|
||
|
- [ ] 包含@Description注释
|
||
|
- [ ] 包含@Tags注释
|
||
|
- [ ] 包含@Router注释
|
||
|
- [ ] 描述使用中文
|
||
|
- [ ] 路径符合RESTful规范
|
||
|
|
||
|
### 现有方法检查
|
||
|
- [ ] 补充缺失的注释
|
||
|
- [ ] 统一标签命名
|
||
|
- [ ] 优化描述内容
|
||
|
- [ ] 验证路径正确性
|
||
|
|
||
|
## 工具支持
|
||
|
|
||
|
### 自动化检查脚本
|
||
|
```bash
|
||
|
# 检查Controller注释完整性
|
||
|
go run tools/check_controller_comments.go
|
||
|
|
||
|
# 生成路由描述映射
|
||
|
go run tools/generate_route_descriptions.go
|
||
|
```
|
||
|
|
||
|
### IDE配置
|
||
|
- 配置Go注释模板
|
||
|
- 启用Swagger注释高亮
|
||
|
- 设置注释格式检查
|