Go-Zero 微服务后端开发 Skill,含 API 定义、代码生成、业务逻辑规范
---
name: Go-Zero 后端规范
description: Go-Zero 后端开发规范。API 定义在 apilist/*.api、goctl api go 生成命令、目录结构(handler/logic/model)、响应格式(code/message/data)。禁止直接修改 types.go。
---
- API 前缀统一为 `/api/v1/buffett/xxx`
- 主 API 文件为 `apilist/api.api`,模块 API 在 `apilist/buffett/` 子目录
- 新增/修改 API 必须先修改 `.api` 文件,再执行 `goctl api go` 生成代码
- **禁止直接修改 `internal/types/types.go`**
- 所有数据库查询、增加、删除(软删除)等**原子操作**,必须在 `model/` 目录下对应的 `*_model.go`(非 `*_gen.go`)文件中实现
- **Logic 层应保持纯净**,只负责业务逻辑组装,通过调用 Model 层提供的方法来操作数据
- **绝对禁止**在 Logic 层直接写 SQL 查询
```bash
go install github.com/zeromicro/go-zero/tools/goctl@latest
cd backend
goctl api go -api ./apilist/api.api -dir . -style=go_zero --home ./dev/template/
cd backend
./goctl-model.sh <group_name> <table_name>
keeprule/backend/
├── api.go
├── apilist/
│ ├── api.api
│ └── buffett/
│ ├── categories/categories.api
│ ├── rules/rules.api
│ └── chat/chat.api
│
├── internal/
│ ├── config/config.go
│ ├── handler/
│ ├── logic/
│ ├── svc/serviceContext.go
│ └── types/types.go
│
├── model/
│ ├── rules/
│ ├── user/
│ └── model/
│
├── dev/template/
├── etc/
│ ├── api.yaml
│ └── api.local.yaml
├── storage/logs/
└── goctl-model.sh
| 接口 |
方法 |
说明 |
/api/v1/buffett/categories/list |
GET |
获取大师列表 |
/api/v1/buffett/categories/detail |
GET |
获取大师详情 |
/api/v1/buffett/rules/list |
GET |
获取原则列表 |
/api/v1/buffett/rules/detail |
GET |
获取原则详情 |
/api/v1/buffett/chat/send |
POST |
AI 对话 |
/api/v1/buffett/chat/history |
GET |
获取聊天历史 |
{
"code": 200,
"message": "操作成功",
"data": { ... }
}
| 响应码 |
含义 |
200 |
成功 |
400 |
参数错误 |
401 |
未授权 |
500 |
服务器错误 |
response.Success(w, data)
response.SuccessWithMessage(w, data, "自定义消息")
response.Error(w, 401, "用户未登录")
response.Error(w, 500, "服务器内部错误")
cd backend
go run . -f etc/api.local.yaml