Нет описания

wangkun cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
etc cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
internal cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
.gitignore cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
README.md cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
go.mod cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
go.sum cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
udeServer.api cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад
udeserver.go cd017d5cf1 chore: 初始化 go-zero 项目 2 недель назад

README.md

udeServer

基于 go-zero 的 HTTP API 服务。项目由 goctl 生成,包含示例接口 GET /from/:name 和数据库连通性检查接口 GET /db/ping。

技术栈

组件 版本
Go 1.25.10
go-zero v1.10.3
goctl v1.10.2
MySQL 8.4.4(10.10.10.30:3306/ude)

目录结构

.
├── udeServer.api              # API 定义(接口的唯一事实来源)
├── udeserver.go               # 程序入口
├── etc/
│   └── udeserver-api.yaml     # 配置文件
├── internal/
│   ├── config/                # 配置结构体
│   ├── handler/               # HTTP handler 与路由注册
│   ├── logic/                 # 业务逻辑
│   ├── svc/                   # ServiceContext,管理依赖
│   └── types/                 # 请求/响应类型
├── go.mod
└── go.sum

环境说明

  • Go 1.25.10 安装在 C:\Users\Administrator\sdk\go1.25.10;系统默认的 go 仍为 1.24.0。
  • 已设置 GOTOOLCHAIN=auto,因此在 go.mod 要求 go 1.25.10 时,Go 会自动切换到 1.25.10,无需手动修改 PATH。
  • goctl 安装在 C:\Users\Administrator\go\bin\goctl.exe,该目录未加入 PATH,下文使用完整路径调用。
  • 若希望命令行直接使用 1.25.10,可将 C:\Users\Administrator\sdk\go1.25.10\bin 放到 PATH 最前面。

快速开始

# 下载依赖(首次执行会按 go.mod 自动获取 Go 1.25.10 工具链)
go mod download

# 启动服务,默认监听 0.0.0.0:8080
go run udeserver.go -f etc/udeserver-api.yaml

# 另开终端验证
curl http://127.0.0.1:8080/from/you
# {"message":"Hello you"}

curl http://127.0.0.1:8080/db/ping
# {"ok":true,"version":"8.4.4","database":"ude"}

构建可执行文件:

go build -o bin/udeserver.exe udeserver.go
.\bin\udeserver.exe -f etc\udeserver-api.yaml

修改接口

  1. 编辑 udeServer.api(新增 type、service、路由)。
  2. 重新生成代码:
C:\Users\Administrator\go\bin\goctl.exe api go -api udeServer.api -dir .

internal/logic 下的已有业务逻辑不会被覆盖,可放心迭代 API 定义。

配置

etc/udeserver-api.yaml:

Name: udeServer-api
Host: 0.0.0.0
Port: 8080

MySQL:
  DataSource: "ude:H3G8xzfYpAASYFxF@tcp(10.10.10.30:3306)/ude?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai"

说明:goctl 生成的默认端口是 8888,但本机 8888 已被另一个 GoLand 服务占用,因此改为 8080。

数据库密码目前以明文写在配置中,请勿提交到公开仓库;生产环境建议使用环境变量或密钥管理服务注入。

go-zero 还支持在配置中开启日志、链路追踪、Prometheus 指标、限流等功能,按需在 rest.RestConf 基础上扩展 internal/config/config.go 即可。

数据库

  • 连接地址:10.10.10.30:3306,数据库 ude,账号 ude
  • 服务启动时通过 sqlx.MustNewConn(c.MySQL) 创建连接池(go-zero 默认 64 个连接,空闲回收 1 分钟)
  • ServiceContext 中的 DB sqlx.SqlConn 可直接在 logic 层使用:
var count int64
err := l.svcCtx.DB.QueryRowCtx(l.ctx, &count, "SELECT COUNT(*) FROM your_table")
  • 当前 ude 库中还没有表,因此暂未生成 model。建表后可按表生成:
C:\Users\Administrator\go\bin\goctl.exe model mysql datasource ^
  -url "ude:H3G8xzfYpAASYFxF@tcp(10.10.10.30:3306)/ude" ^
  -table "your_table" -dir internal/model

后续扩展

  • 接入 Redis:在 internal/config 中增加 Redis 配置,并在 internal/svc 中初始化客户端。
  • 拆分 RPC 服务:goctl rpc new <service>,再在 ServiceContext 中注入 RPC 客户端。
  • 多服务单仓库布局:将当前服务移动到 app/<service>/api 下,统一使用根 go.mod 管理。