Files
rust-user-api/project_plan.md
enoch 28afc7532f feat: [阶段1] 项目初始化和基础设置
- 创建 Cargo.toml 配置文件,包含所有必要依赖
- 建立完整的项目模块结构(config, models, handlers, routes, services, storage, middleware, utils)
- 实现用户数据模型和内存存储
- 创建基础的 HTTP 处理器和路由配置
- 添加错误处理和 JWT 认证中间件
- 配置环境变量和日志系统
- 创建项目文档和学习指南
- 服务器可以成功编译和启动
2025-08-04 16:49:50 +08:00

167 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Rust REST API Server Demo 项目规划
## 项目概述
这是一个专为学习 Rust web 开发设计的渐进式 REST API server 项目。项目从简单的内存存储开始,逐步扩展到数据库集成和高级功能,帮助您全面掌握 Rust web 开发的核心概念。
## 技术栈
- **Web 框架**: Axum现代、高性能、类型安全
- **序列化**: SerdeJSON 处理)
- **异步运行时**: Tokio异步编程基础
- **数据库**: 先用 HashMap内存后扩展到 SQLite
- **身份认证**: JWT tokens
- **测试**: 内置测试框架 + reqwestHTTP 客户端测试)
## 项目结构
```
rust-user-api/
├── Cargo.toml # 项目配置和依赖
├── README.md # 项目说明文档
├── src/
│ ├── main.rs # 应用入口点
│ ├── lib.rs # 库入口,导出公共模块
│ ├── config/
│ │ └── mod.rs # 配置管理
│ ├── models/
│ │ ├── mod.rs # 数据模型模块
│ │ └── user.rs # 用户数据模型
│ ├── handlers/
│ │ ├── mod.rs # 处理器模块
│ │ └── user.rs # 用户相关的 API 处理器
│ ├── services/
│ │ ├── mod.rs # 业务逻辑服务模块
│ │ └── user_service.rs # 用户业务逻辑
│ ├── storage/
│ │ ├── mod.rs # 存储抽象模块
│ │ ├── memory.rs # 内存存储实现
│ │ └── database.rs # 数据库存储实现(后期)
│ ├── middleware/
│ │ ├── mod.rs # 中间件模块
│ │ └── auth.rs # 身份认证中间件
│ ├── utils/
│ │ ├── mod.rs # 工具函数模块
│ │ └── errors.rs # 错误处理
│ └── routes/
│ └── mod.rs # 路由配置
├── tests/
│ ├── integration_tests.rs # 集成测试
│ └── api_tests.rs # API 测试
└── docs/
└── api.md # API 文档
```
## API 端点设计
### 用户管理 API
```
GET /api/users # 获取所有用户(支持分页)
GET /api/users/{id} # 获取特定用户
POST /api/users # 创建新用户
PUT /api/users/{id} # 更新用户信息
DELETE /api/users/{id} # 删除用户
POST /api/auth/login # 用户登录
POST /api/auth/register # 用户注册
```
## 数据模型设计
### 用户模型
```rust
pub struct User {
pub id: u64,
pub username: String,
pub email: String,
pub password_hash: String,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
pub struct UserResponse {
pub id: u64,
pub username: String,
pub email: String,
pub created_at: DateTime<Utc>,
}
```
## 学习路径
### 阶段 1: 基础搭建
- **目标**: 建立项目基础,理解 Rust 项目结构
- **重点学习**: Cargo 项目管理、模块系统、基础 HTTP 服务
### 阶段 2: 核心功能实现
- **目标**: 实现完整的 CRUD 操作
- **重点学习**: Axum 框架、异步编程、JSON 处理
### 阶段 3: 错误处理和验证
- **目标**: 添加健壮的错误处理机制
- **重点学习**: Rust 错误处理最佳实践、请求验证
### 阶段 4: 身份认证
- **目标**: 实现 JWT 身份认证系统
- **重点学习**: 安全编程、中间件设计
### 阶段 5: 测试和文档
- **目标**: 完善测试覆盖和 API 文档
- **重点学习**: 单元测试、集成测试、API 文档编写
### 阶段 6: 数据持久化
- **目标**: 从内存存储迁移到数据库
- **重点学习**: 数据库集成、迁移管理、连接池
### 阶段 7: 高级功能
- **目标**: 添加分页、搜索、过滤等功能
- **重点学习**: 性能优化、复杂查询处理
### 阶段 8: 生产准备
- **目标**: 添加日志、配置管理、容器化
- **重点学习**: 生产环境最佳实践、部署策略
## 架构设计
```mermaid
graph TB
Client[客户端] --> Router[路由层]
Router --> Auth[认证中间件]
Auth --> Handler[处理器层]
Handler --> Service[业务逻辑层]
Service --> Storage[存储层]
Storage --> Memory[内存存储]
Storage --> Database[数据库存储]
Handler --> Response[响应处理]
Response --> Client
subgraph "错误处理"
ErrorHandler[错误处理器]
Handler --> ErrorHandler
Service --> ErrorHandler
Storage --> ErrorHandler
end
```
## 项目优势
1. **渐进式学习**: 从简单开始,逐步增加复杂性
2. **模块化架构**: 清晰的分层设计,便于理解和维护
3. **实用性强**: 涵盖真实项目中的常见需求
4. **最佳实践**: 遵循 Rust 社区的最佳实践和惯例
5. **完整覆盖**: 从基础语法到生产部署的全流程学习
## 预期学习成果
完成这个项目后,您将掌握:
- Rust 项目组织和模块系统
- 异步编程和 Tokio 运行时
- Web 框架Axum的使用
- REST API 设计和实现
- 数据库集成和 ORM 使用
- 身份认证和安全编程
- 错误处理和测试编写
- 生产环境部署准备
这个项目将为您提供一个完整的 Rust web 开发学习体验,帮助您从初学者成长为能够独立开发 Rust web 应用的开发者。