轻量级短链生成与解析服务,支持长 URL 转换为短链接、短链跳转、逻辑删除等功能。
- 语言: Go 1.25+
- Web 框架: Gin
- 数据库: MySQL 8.0
- 数据库访问: sqlx
- 配置管理: viper
- 日志: zap
- 测试: testing + testify + sqlmock
- Go 1.25+
- MySQL 8.0+
mysql -u shortlink -p shortlink < scripts/init.sql复制环境变量示例并修改:
cp .env.example .env
# 编辑 .env,填入数据库密码go run cmd/server/main.go服务默认监听 0.0.0.0:8080。
daoyu-shortLink/
├── cmd/server/main.go # 程序入口
├── internal/
│ ├── handler/ # HTTP 处理器
│ ├── middleware/ # 中间件(认证等)
│ ├── model/ # 数据模型
│ ├── repository/ # 数据库访问层
│ └── service/ # 业务逻辑层
├── pkg/
│ ├── config/ # 配置加载
│ ├── database/ # 数据库连接
│ ├── response/ # 统一响应封装
│ └── codegen/ # 短链码生成器
├── api/ # OpenAPI 规范
├── configs/config.yaml # 配置文件
├── scripts/init.sql # 数据库初始化脚本
├── docs/ # 文档
├── go.mod
└── README.md
| 方法 | 路径 | 说明 | 认证 |
|---|---|---|---|
| GET | /health |
健康检查 | 否 |
| POST | /api/v1/shorten |
生成短链 | Bearer Token |
| DELETE | /api/v1/shorten/:code |
删除短链 | Bearer Token |
| GET | /:code |
解析短链并跳转 | 否 |
详见 docs/api.md。
配置文件位于 configs/config.yaml,支持通过 ${ENV_VAR} 注入环境变量。
关键配置项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
server.port |
服务端口 | 8080 |
database.password |
数据库密码(建议环境变量) | - |
auth.tokens |
有效 Token 列表 | - |
shorten.base_url |
短链域名 | http://s.example.com |
shorten.code_length |
短链码长度 | 6 |
shorten.max_retry |
冲突最大重试次数 | 3 |
# 运行全量测试
go test ./...
# 运行指定包测试
go test ./internal/service/... -v内部项目,保留所有权利。