logo
0
0
Login

MyBlog - Go 博客系统

一个基于 Go + Gin + GORM + SQLite 构建的轻量级博客系统,支持用户注册、登录、博文管理等功能。

功能特性

  • 用户认证

    • 用户注册和登录
    • JWT Token 认证
    • 密码加密存储
  • 博文管理

    • 创建、编辑、删除博文
    • 博文详情查看
    • 用户博文列表展示
  • 管理员功能

    • 管理员后台页面
    • 用户和博文管理
  • 模板渲染

    • 首页展示
    • 用户注册/登录页面
    • 博文创建/编辑页面
    • 用户博文管理页面

技术栈

  • Web 框架: Gin v1.11.0
  • ORM: GORM v1.31.1
  • 数据库: SQLite v1.6.0
  • JWT 认证: jwt-go v5.3.0
  • 配置管理: godotenv v1.5.1

项目结构

myblog/ ├── config/ # 配置管理 ├── handler/ # 请求处理器 │ ├── admin/ # 管理员处理器 │ ├── auth/ # 认证处理器 │ ├── post/ # 博文处理器 │ └── user/ # 用户处理器 ├── middleware/ # 中间件 ├── pkg/ # 核心包 │ ├── auth/ # JWT 认证 │ └── model/ # 数据模型 ├── router/ # 路由配置 │ ├── admin/ # 管理员路由 │ ├── auth/ # 认证路由 │ ├── post/ # 博文路由 │ ├── templates/ # 模板路由 │ └── user/ # 用户路由 ├── static/ # 静态文件 ├── templates/ # HTML 模板 ├── .env # 环境配置 ├── go.mod # Go 模块依赖 └── main.go # 程序入口

快速开始

环境要求

  • Go 1.24.5 或更高版本
  • SQLite3

安装步骤

  1. 克隆项目
git clone <repository-url> cd myblog
  1. 安装依赖
go mod download
  1. 配置环境变量

复制 .env 文件并根据需要修改配置:

# 服务相关配置 SERVER_PORT=8080 GIN_MODE=debug # JWT 相关配置 SECRET=123456 JWT_EXPIRE_HOURS=24 # 数据库相关配置 DB_NAME=myblog
  1. 运行项目
go run main.go

服务将在 http://localhost:8080 启动。

构建可执行文件

go build -o myblog ./myblog

API 接口

认证相关

  • POST /api/register - 用户注册
  • POST /api/login - 用户登录

博文相关

  • GET /api/posts - 获取博文列表
  • GET /api/posts/:id - 获取博文详情
  • POST /api/posts - 创建博文(需认证)
  • PUT /api/posts/:id - 更新博文(需认证)
  • DELETE /api/posts/:id - 删除博文(需认证)

管理员相关

  • GET /api/admin - 管理员后台(需认证)

系统

  • GET /api/ping - 健康检查

页面路由

  • / - 首页
  • /login - 登录页面
  • /register - 注册页面
  • /posts/new - 新建博文
  • /posts/:id - 博文详情
  • /user/posts - 用户博文管理
  • /dashboard - 用户仪表盘
  • /admin - 管理员后台

开发说明

数据库迁移

项目启动时会自动执行数据库迁移,创建必要的数据表。

开发模式

.env 中设置 GIN_MODE=debug 启用调试模式。

生产模式

.env 中设置 GIN_MODE=release 启用生产模式。

配置说明

配置项说明默认值
SERVER_PORT服务端口8080
GIN_MODEGin 运行模式 (debug/release)debug
SECRETJWT 密钥123456
JWT_EXPIRE_HOURSJWT Token 过期时间(小时)24
DB_NAME数据库名称myblog

安全建议

  1. 修改默认的 JWT Secret
  2. 生产环境使用强密码策略
  3. 启用 HTTPS
  4. 定期备份数据库
  5. 使用环境变量管理敏感信息

许可证

本项目采用 MIT 许可证。

贡献

欢迎提交 Issue 和 Pull Request。

About

一个博客练手项目,指在理解gin的框架,路由,中间库,gorm等使用

Language
HTML76.5%
Go15.6%
JavaScript8%