enoch c18f345475 Stage 8: 完成 SQLite 数据库存储集成
 新功能:
- 实现 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 抽象设计模式
- 学习异步数据库操作
- 实践配置管理
2025-08-04 20:02:20 +08:00

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

学习路径

这个项目按照以下阶段设计,适合渐进式学习:

  1. 基础搭建 - 项目初始化和 HTTP 服务器
  2. 数据模型 - 用户模型和内存存储
  3. CRUD 操作 - 完整的用户管理 API
  4. 错误处理 - 统一的错误处理机制
  5. 身份认证 - JWT 认证系统
  6. 测试文档 - 测试用例和 API 文档
  7. 数据库集成 - SQLite 数据库支持
  8. 高级功能 - 分页、搜索、过滤等

贡献

欢迎提交 Issue 和 Pull Request

许可证

MIT License

Description
一个使用 Rust 和 Axum 框架构建的 REST API 服务器项目,基于 AI 完成,支持用户管理,用于 rust 语言学习
Readme 188 KiB
Languages
Rust 94.2%
Shell 5.2%
Dockerfile 0.6%