c18f34547573ad9bcbfdf7ccf1a0f92c2dd6d844
✨ 新功能: - 实现 DatabaseUserStore 结构体,支持 SQLite 数据库操作 - 创建 UserStore trait 抽象层,支持多种存储后端 - 添加数据库连接和表初始化功能 - 支持通过环境变量配置数据库 URL 🔧 技术改进: - 使用 SQLx 进行异步数据库操作 - 实现 trait-based 存储架构,便于扩展 - 添加完整的 CRUD 数据库操作 - 支持数据库错误处理和类型转换 🧪 测试验证: - 所有 API 端点正常工作 - 数据持久化到 SQLite 文件 - 用户创建、查询、登录功能完整 - 重复用户名检查正常工作 📁 文件变更: - 新增: src/storage/database.rs - SQLite 存储实现 - 新增: src/storage/traits.rs - 存储抽象 trait - 更新: src/storage/mod.rs - 导出新模块 - 更新: src/routes/mod.rs - 支持 trait 对象 - 更新: src/handlers/user.rs - 使用 trait 抽象 - 更新: src/main.rs - 数据库初始化逻辑 - 更新: Cargo.toml - 添加 SQLx 依赖 - 新增: .env - 数据库配置文件 🎯 学习目标达成: - 掌握 Rust 数据库集成 - 理解 trait 抽象设计模式 - 学习异步数据库操作 - 实践配置管理
Rust User API
一个使用 Rust 和 Axum 框架构建的 REST API 服务器,用于用户管理系统的学习和演示。
功能特性
- ✅ 用户 CRUD 操作(创建、读取、更新、删除)
- ✅ 内存存储(HashMap)
- ✅ 请求验证和错误处理
- ✅ JWT 身份认证
- ✅ 结构化日志记录
- 🔄 SQLite 数据库集成(计划中)
- 🔄 API 文档和测试(计划中)
技术栈
- Web 框架: Axum 0.7
- 异步运行时: Tokio
- 序列化: Serde
- 身份认证: JWT (jsonwebtoken)
- 验证: Validator
- 日志: Tracing
快速开始
1. 克隆项目
git clone <repository-url>
cd rust-user-api
2. 配置环境
cp .env.example .env
# 编辑 .env 文件,修改配置参数
3. 运行项目
cargo run
服务器将在 http://127.0.0.1:3000
启动。
API 端点
基础端点
GET /
- 欢迎信息GET /health
- 健康检查
用户管理
GET /api/users
- 获取所有用户GET /api/users/{id}
- 获取特定用户POST /api/users
- 创建新用户PUT /api/users/{id}
- 更新用户信息DELETE /api/users/{id}
- 删除用户
请求示例
创建用户
curl -X POST http://localhost:3000/api/users \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"email": "test@example.com",
"password": "password123"
}'
获取所有用户
curl http://localhost:3000/api/users
项目结构
src/
├── main.rs # 应用入口点
├── lib.rs # 库入口
├── config/ # 配置管理
├── models/ # 数据模型
├── handlers/ # HTTP 处理器
├── routes/ # 路由配置
├── services/ # 业务逻辑
├── storage/ # 数据存储
├── middleware/ # 中间件
└── utils/ # 工具函数
开发
运行测试
cargo test
检查代码
cargo clippy
格式化代码
cargo fmt
学习路径
这个项目按照以下阶段设计,适合渐进式学习:
- 基础搭建 - 项目初始化和 HTTP 服务器
- 数据模型 - 用户模型和内存存储
- CRUD 操作 - 完整的用户管理 API
- 错误处理 - 统一的错误处理机制
- 身份认证 - JWT 认证系统
- 测试文档 - 测试用例和 API 文档
- 数据库集成 - SQLite 数据库支持
- 高级功能 - 分页、搜索、过滤等
贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT License
Description
Languages
Rust
94.2%
Shell
5.2%
Dockerfile
0.6%