# rust学习Rocket框架 **Repository Path**: fengliuwt/rust-finance-api ## Basic Information - **Project Name**: rust学习Rocket框架 - **Description**: 使用rust开发一个财务管理系统后台API系统。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-12 - **Last Updated**: 2026-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rust 个人财务管理系统 API 基于 Rust + Rocket + MySQL 的高性能个人财务管理系统后端 API。 ## 技术栈 - **Rust**: 高性能、内存安全的编程语言 - **Rocket**: 易用的 Web 框架 - **SQLx**: 编译时检查 SQL 的异步数据库驱动 - **MySQL**: 关系型数据库 - **JWT**: JSON Web Token 认证 - **bcrypt**: 密码哈希 ## 项目结构 ``` rust-finance-api/ ├── src/ │ ├── main.rs # 主程序入口 │ ├── models/ # 数据模型 │ ├── handlers/ # 路由处理器 │ ├── services/ # 业务逻辑层 │ ├── repositories/ # 数据访问层 │ ├── guards/ # JWT 认证守卫 │ └── utils/ # 工具函数(错误处理、JWT) ├── migrations/ # 数据库迁移文件 ├── Cargo.toml # 项目配置 └── .env # 环境变量配置 ``` ## 环境准备 ### 1. 安装 Rust 访问 [https://rustup.rs/](https://rustup.rs/) 安装 Rust。 ### 2. 安装 MySQL 确保已安装并启动 MySQL 8.0+。 ### 3. 配置数据库 创建数据库: ```sql CREATE DATABASE rust_finance_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 执行数据库迁移: ```bash mysql -u root -p rust_finance_db < migrations/001_init.sql ``` ### 4. 配置环境变量 复制 `.env` 文件并修改数据库连接信息: ```env DATABASE_URL=mysql://username:password@localhost:3306/rust_finance_db JWT_SECRET=your-super-secret-jwt-key-change-this-in-production JWT_EXPIRATION_HOURS=24 ROCKET_ADDRESS=127.0.0.1 ROCKET_PORT=8000 RUST_LOG=info ``` ## 运行项目 ### 开发模式 ```bash cargo run ``` ### 生产模式 ```bash cargo build --release ./target/release/rust-finance-api ``` ## API 文档 ### 认证模块 #### 用户注册 ``` POST /api/auth/register Content-Type: application/json { "username": "testuser", "email": "test@example.com", "password": "password123" } ``` #### 用户登录 ``` POST /api/auth/login Content-Type: application/json { "username_or_email": "testuser", "password": "password123" } ``` #### 获取当前用户信息 ``` GET /api/auth/me Authorization: Bearer ``` ### 账户管理 #### 创建账户 ``` POST /api/accounts Authorization: Bearer Content-Type: application/json { "name": "我的钱包", "type": "cash", "initial_balance": 1000.00 } ``` #### 获取所有账户 ``` GET /api/accounts Authorization: Bearer ``` #### 获取单个账户 ``` GET /api/accounts/ Authorization: Bearer ``` #### 更新账户 ``` PUT /api/accounts/ Authorization: Bearer Content-Type: application/json { "name": "新的账户名称" } ``` #### 删除账户 ``` DELETE /api/accounts/ Authorization: Bearer ``` ### 分类管理 #### 创建分类 ``` POST /api/categories Authorization: Bearer Content-Type: application/json { "name": "餐饮", "type": "expense" } ``` #### 获取所有分类 ``` GET /api/categories?type=expense Authorization: Bearer ``` #### 删除分类 ``` DELETE /api/categories/ Authorization: Bearer ``` ### 交易记录 #### 创建交易 ``` POST /api/transactions Authorization: Bearer Content-Type: application/json { "account_id": 1, "category_id": 1, "amount": -50.00, "description": "午餐", "transaction_date": "2024-01-10" } ``` #### 获取交易列表 ``` GET /api/transactions?page=1&size=20 Authorization: Bearer ``` #### 更新交易 ``` PUT /api/transactions/ Authorization: Bearer Content-Type: application/json { "description": "更新的描述" } ``` #### 删除交易 ``` DELETE /api/transactions/ Authorization: Bearer ``` ### 统计报表 #### 月度统计 ``` GET /api/stats/monthly?year=2024&month=1 Authorization: Bearer ``` #### 分类统计 ``` GET /api/stats/category-expense?year=2024&month=1 Authorization: Bearer ``` ## 特性 - ✅ 用户注册和登录(JWT 认证) - ✅ 账户管理(增删改查) - ✅ 分类管理(增删改查) - ✅ 交易记录(增删改查、分页查询) - ✅ 统计报表(月度统计、分类统计) - ✅ 事务处理(保证余额更新的原子性) - ✅ 全局错误处理 - ✅ CORS 支持 - ✅ 结构化日志 ## 开发计划 - [ ] 集成 rocket_okapi 自动生成 OpenAPI 文档 - [ ] 添加单元测试和集成测试 - [ ] Docker 容器化部署 - [ ] 添加数据导入导出功能 - [ ] 添加预算管理功能 ## 许可证 MIT License