- 在 .gitignore 中添加 data.db 以排除数据库文件 - 删除之前提交的 backend/data.db 文件 - 防止包含敏感数据的数据库文件被意外提交到版本控制中
WebDemo 后端服务
这是一个使用 Go 语言和 SQLite 数据库构建的 RESTful API 后端服务,实现了用户认证和文章管理功能。
功能特性
-
用户系统
- 用户注册和登录
- 用户信息查询、更新和删除
- 密码安全加密存储
-
文章管理
- 公开文章列表和详情查询
- 用户个人文章的创建、更新和删除
- 作者关联和权限控制
-
系统特性
- SQLite 数据库支持
- 完善的日志记录
- 优雅的错误处理和响应格式化
- 中间件支持
- 健康检查端点
技术栈
- 开发语言: Go 1.25.4
- Web框架: Gin
- 数据库: SQLite
- 认证: JWT
- 日志: logrus
- 验证: go-playground/validator
项目结构
backend
│ data.db
│ go.mod
│ go.sum
│ main.go
│ WebDemo.exe
├─api
│ │ router.go
│ ├─handler
│ │ article_handler.go
│ │ user_handler.go
│ └─middleware
│ auth.go
│ logger.go
│ recovery.go
├─config
│ config.go
├─internal
│ ├─model
│ │ article.go
│ │ user.go
│ ├─repository
│ │ article_repository.go
│ │ user_repository.go
│ └─service
│ article_service.go
│ user_service.go
├─pkg
│ ├─auth
│ │ jwt.go
│ ├─common
│ │ errors.go
│ │ response.go
│ └─database
│ sqlite.go
├─scripts
│ init.sql
└─test
test-api.ps1
环境要求
- Go 1.25.4 或更高版本
- 系统支持:Windows、Linux、macOS
安装与配置
1. 克隆项目
git clone <repository-url>
cd WebDemo/backend
2. 安装依赖
go mod tidy
3. 配置环境变量
可以通过环境变量自定义配置(可选):
| 环境变量 | 说明 | 默认值 |
|---|---|---|
| SERVER_PORT | 服务器端口 | 8080 |
| DB_PATH | 数据库文件路径 | data.db |
| LOG_LEVEL | 日志级别 | info |
| JWT_SECRET | JWT签名密钥 | your-very-secure-secret-key-change-it-in-production |
| JWT_EXPIRY_HOURS | JWT过期时间(小时) | 24 |
4. 编译运行
编译为可执行文件:
# Windows
go build -o WebDemo.exe
# Linux/macOS
go build -o WebDemo
直接运行:
go run main.go
API文档
健康检查
- GET /health
- 描述:检查服务健康状态
- 响应:
{"status": "ok"}
用户认证
-
POST /api/v1/auth/register
- 描述:用户注册
- 请求体:
{ "username": "用户名", "email": "邮箱", "password": "密码" }
-
POST /api/v1/auth/login
- 描述:用户登录
- 请求体:
{ "email": "邮箱", "password": "密码" } - 成功响应:
{ "token": "JWT令牌", "user": { "id": 1, "username": "用户名", "email": "邮箱", "created_at": "时间戳" } }
用户管理(需认证)
-
GET /api/v1/users/me
- 描述:获取当前用户信息
- 头部:
Authorization: Bearer <token>
-
PUT /api/v1/users/me
- 描述:更新当前用户信息
- 头部:
Authorization: Bearer <token> - 请求体:
{ "username": "新用户名(可选)", "email": "新邮箱(可选)", "password": "新密码(可选)" }
-
DELETE /api/v1/users/me
- 描述:删除当前用户账号
- 头部:
Authorization: Bearer <token>
文章管理
公开接口
-
GET /api/v1/articles
- 描述:获取文章列表
- 查询参数:
page(页码),limit(每页数量)
-
GET /api/v1/articles/:id
- 描述:获取指定文章详情
需要认证的接口
-
POST /api/v1/articles
- 描述:创建新文章
- 头部:
Authorization: Bearer <token> - 请求体:
{ "title": "文章标题", "content": "文章内容" }
-
GET /api/v1/articles/my
- 描述:获取当前用户的文章列表
- 头部:
Authorization: Bearer <token>
-
PUT /api/v1/articles/:id
- 描述:更新文章(仅限作者)
- 头部:
Authorization: Bearer <token> - 请求体:
{ "title": "新标题(可选)", "content": "新内容(可选)" }
-
DELETE /api/v1/articles/:id
- 描述:删除文章(仅限作者)
- 头部:
Authorization: Bearer <token>
默认账号信息
系统初始化时会创建两个默认账号:
-
管理员账号
- 用户名:admin
- 邮箱:admin@example.com
- 密码:admin123
-
测试用户账号
- 用户名:testuser
- 邮箱:test@example.com
- 密码:user123
注意:生产环境请务必修改这些默认密码!
数据库说明
项目使用 SQLite 数据库,数据库文件默认为 data.db。数据库初始化脚本位于 scripts/init.sql,包含:
- users 表:用户信息存储
- articles 表:文章内容存储
- 相关索引和初始数据
部署指南
Windows 部署
- 编译生成 WebDemo.exe
- 将 WebDemo.exe、data.db 和 scripts 文件夹复制到目标服务器
- 配置环境变量(可选)
- 运行 WebDemo.exe 或配置为 Windows 服务
Linux 部署
- 编译生成 WebDemo 可执行文件
GOOS=linux GOARCH=amd64 go build -o WebDemo - 复制文件到目标服务器
- 赋予执行权限:
chmod +x WebDemo - 运行或配置为系统服务
安全建议
- 在生产环境中,务必修改默认的 JWT 密钥
- 定期备份数据库文件
- 限制 API 访问频率,防止滥用
- 考虑使用 HTTPS 协议
许可证
开发说明
- 代码遵循 Go 语言标准规范
- 使用分层架构:Handler -> Service -> Repository -> Database
- 采用依赖注入模式便于测试和维护