基于 Go 语言的博客后端 API,采用经典分层架构。
- 框架:Gin
- 数据库:MySQL + GORM
- 缓存:Redis
- 认证:JWT
- 日志:Zap
- 部署:Docker + Docker Compose
``` blog-api/ ├── cmd/ # 程序入口 ├── internal/ │ ├── handler/ # HTTP 处理层 │ ├── service/ # 业务逻辑层 │ ├── repository/ # 数据库操作层 │ └── model/ # 数据模型 ├── pkg/ │ ├── config/ # 配置与初始化 │ ├── middleware/ # 中间件 │ └── response/ # 统一响应格式 ├── logs/ # 日志文件 ├── Dockerfile └── docker-compose.yml ```
1. 克隆项目
```bash git clone https://github.com/tusugit/blog-api.git cd blog-api ```
2. 配置文件
```bash cp config.example.yaml config.yaml
```
3. 启动依赖服务
```bash docker-compose up -d mysql redis ```
4. 运行项目
```bash go run cmd/main.go ```
| 方法 | 路径 | 说明 | 是否需要登录 |
|---|---|---|---|
| POST | /api/v1/register | 用户注册 | 否 |
| POST | /api/v1/login | 用户登录 | 否 |
| GET | /api/v1/profile | 获取个人信息 | 是 |
| 方法 | 路径 | 说明 | 是否需要登录 |
|---|---|---|---|
| GET | /api/v1/posts | 获取文章列表(分页) | 否 |
| GET | /api/v1/posts/:id | 获取文章详情 | 否 |
| POST | /api/v1/posts | 创建文章 | 是 |
| PUT | /api/v1/posts/:id | 更新文章 | 是 |
| DELETE | /api/v1/posts/:id | 删除文章 | 是 |
注册 ```json POST /api/v1/register { "username": "testuser", "password": "123456", "email": "test@example.com" } ```
登录 ```json POST /api/v1/login { "username": "testuser", "password": "123456" } ```
创建文章(需要 Authorization: Bearer ) ```json POST /api/v1/posts { "title": "文章标题", "content": "文章内容" } ```
- JWT 身份认证,Token 有效期可配置
- bcrypt 密码加密存储
- Redis 缓存热点文章,缓存命中时无 SQL 查询
- 文章操作权限校验,只有作者可修改和删除
- Zap 结构化日志,同时输出到终端和文件
- 统一响应格式
{"code": 0, "message": "success", "data": {}}