# my_blog **Repository Path**: twopiece/my_blog ## Basic Information - **Project Name**: my_blog - **Description**: go项目个人博客 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-09 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # My Blog - Go MVC项目 这是一个基于Go语言和MVC架构的博客项目,使用Gin框架、MySQL数据库和Redis缓存。 ## 项目结构 ``` my_blog/ ├── main.go # 应用入口 ├── config/ # 配置管理 │ └── config.go ├── database/ # 数据库连接 │ ├── mysql.go │ └── redis.go ├── models/ # 数据模型层 │ └── models.go ├── controllers/ # 控制器层 │ └── controllers.go ├── routes/ # 路由配置 │ └── routes.go ├── middleware/ # 中间件 │ └── middleware.go └── README.md ``` ## 技术栈 - **Web框架**: Gin - **数据库**: MySQL - **缓存**: Redis - **Go版本**: 1.23.6+ ## 安装依赖 ```bash go mod tidy ``` ## 环境变量配置 创建 `.env` 文件或设置以下环境变量: ```bash # 服务器配置 PORT=8080 ENVIRONMENT=development # MySQL配置 MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=your_password MYSQL_DATABASE=my_blog # Redis配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= REDIS_DB=0 ``` ## 数据库初始化 详情见database/init.sql ## 运行项目 ```bash go run main.go ``` ## API接口 ### 健康检查 - `GET /health` - 检查服务器状态 ### 用户接口 - `POST /api/v1/users` - 创建用户 - `GET /api/v1/users/:id` - 获取用户信息 ### 文章接口 - `POST /api/v1/articles` - 创建文章 - `GET /api/v1/articles/:id` - 获取文章详情 - `GET /api/v1/articles` - 获取文章列表(支持分页:?page=1&page_size=10) - `PUT /api/v1/articles/:id` - 更新文章(需登录) - `DELETE /api/v1/articles/:id` - 删除文章(需登录,软删除) ### 友情链接接口 - `GET /api/v1/links` - 获取外链列表(公开,无需登录) - `POST /api/v1/links` - 创建友情链接(需登录) - `PUT /api/v1/links/:id` - 更新友情链接(需登录) - `DELETE /api/v1/links/:id` - 删除友情链接(需登录) ### 用户反馈接口 - `POST /api/v1/feedback` - 提交反馈(公开,无需登录;限流:同一 IP 5 分钟内仅可提交一次) - `GET /api/v1/feedback` - 查看反馈列表(需登录,支持分页:?page=1&page_size=20) ### 图片上传接口 - `POST /api/v1/upload/image` - 上传图片(需登录,支持 `multipart/form-data`,字段名为 `file`,单文件大小限制为 5MB) - 请求头:`Authorization: Bearer ` - 成功响应: ```json { "errno": 0, "data": { "url": "xxx", "alt": "yyy", "href": "zzz" } } ``` - 失败响应: ```json { "errno": 1, "message": "失败信息" } ``` - 已开启静态文件访问:`GET /uploads/images/` 对应本地 `./uploads/images/` ## 示例请求 ### 创建用户 ```bash curl -X POST http://localhost:8080/api/v1/users \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "email": "test@example.com", "password": "123456" }' ``` ### 创建文章 ```bash curl -X POST http://localhost:8080/api/v1/articles \ -H "Content-Type: application/json" \ -d '{ "title": "我的第一篇文章", "content": "这是文章内容..." }' ``` ### 获取文章列表 ```bash curl http://localhost:8080/api/v1/articles?page=1&page_size=10 ``` ## 项目特点 1. **MVC架构**: 清晰的模型-视图-控制器分离 2. **数据库连接池**: MySQL连接池管理 3. **Redis缓存**: 支持数据缓存,提升性能 4. **中间件支持**: CORS、日志、错误恢复 5. **环境配置**: 通过环境变量灵活配置 ## 开发建议 1. 密码应该使用哈希加密(如bcrypt) 2. 添加JWT认证中间件 3. 完善错误处理和日志记录 4. 添加单元测试 5. 使用数据库迁移工具(如golang-migrate)