Skip to content

maxadc/shortLink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shortLink - 短链解析系统

轻量级短链生成与解析服务,支持长 URL 转换为短链接、短链跳转、逻辑删除等功能。


技术栈

  • 语言: Go 1.25+
  • Web 框架: Gin
  • 数据库: MySQL 8.0
  • 数据库访问: sqlx
  • 配置管理: viper
  • 日志: zap
  • 测试: testing + testify + sqlmock

快速开始

1. 环境要求

  • Go 1.25+
  • MySQL 8.0+

2. 初始化数据库

mysql -u shortlink -p shortlink < scripts/init.sql

3. 配置环境变量

复制环境变量示例并修改:

cp .env.example .env
# 编辑 .env,填入数据库密码

4. 启动服务

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

API 概览

方法 路径 说明 认证
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

设计文档


许可

内部项目,保留所有权利。

About

适合个人、企业自己使用的短链系统。实测100万数据1ms不到。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors