# rust-web **Repository Path**: qianxkun/rust-web ## Basic Information - **Project Name**: rust-web - **Description**: rust-web demo - **Primary Language**: Rust - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-22 - **Last Updated**: 2026-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rust Web 项目 这是一个基于 Rust + Axum + SQLx 的 RESTful API 项目,提供用户管理功能。 ## 项目结构 ``` src/ ├── api/ # API 相关代码 │ ├── handlers/ # 请求处理器 │ │ ├── mod.rs │ │ └── user.rs # 用户相关的请求处理 │ ├── routes/ # 路由定义 │ │ ├── mod.rs │ │ ├── user.rs # 用户路由 │ │ └── swagger.rs # Swagger 文档路由 │ └── mod.rs # API 模块导出 ├── database/ # 数据库相关代码 │ ├── connection.rs # 数据库连接管理 │ ├── models/ # 数据库模型 │ │ ├── mod.rs │ │ └── user.rs # 用户模型 │ ├── migrations/ # 数据库迁移脚本 │ └── mod.rs # 数据库模块导出 ├── schemas/ # 数据传输对象(DTO) │ ├── mod.rs │ └── user.rs # 用户相关的 DTO ├── services/ # 业务逻辑层 │ ├── mod.rs │ └── user.rs # 用户相关的业务逻辑 ├── utils/ # 工具函数 │ ├── mod.rs │ └── error.rs # 错误处理 ├── config.rs # 配置管理 ├── errors.rs # 自定义错误类型 ├── main.rs # 主入口文件 ``` ## 技术栈 | 分类 | 技术 | |------|------| | Web 框架 | Axum | | 数据库 | SQLx (SQLite) | | 序列化 | Serde | | API 文档 | Utoipa + Swagger UI | | 异步运行时 | Tokio | | 配置管理 | config + dotenvy | | 日志追踪 | tracing + tracing-subscriber | | 验证 | validator | | 唯一 ID | UUID | | 时间处理 | Chrono | ## 功能 ### 用户管理 - 获取所有用户列表 - 获取指定用户详情 - 创建新用户 - 更新用户信息 - 删除用户 ## API 端点 ### Swagger 文档 - **OpenAPI JSON**: `GET /api-docs/openapi.json` - **Swagger UI**: `GET /swagger-ui/` ### 用户管理 | 方法 | 端点 | 描述 | |------|------|------| | GET | /users | 获取所有用户 | | GET | /users/:id | 获取指定用户 | | POST | /users | 创建新用户 | | PUT | /users/:id | 更新指定用户 | | DELETE | /users/:id | 删除指定用户 | ## 配置说明 项目使用 `.env` 文件配置,可用的配置项: | 变量名 | 说明 | 默认值 | |--------|------|--------| | DATABASE_URL | 数据库连接地址 | sqlite:rust-web.db | | SERVER_HOST | 服务器监听地址 | 0.0.0.0 | | SERVER_PORT | 服务器监听端口 | 3000 | ## 运行项目 ```bash # 安装依赖 cargo build # 开发模式运行 cargo run # 发布模式运行 cargo run --release ``` 服务器将在 `http://localhost:3000` 上运行。 ## 测试 ```bash cargo test ``` ## 数据库 项目使用 SQLite 数据库,表结构如下: ### users 表 | 字段 | 类型 | 说明 | |------|------|------| | id | TEXT | 主键(UUID) | | name | TEXT | 用户名 | | email | TEXT | 邮箱(唯一) | | age | INTEGER | 年龄 | | created_at | TEXT | 创建时间 | | updated_at | TEXT | 更新时间 | ## 项目依赖 - **axum**: Web 框架 - **sqlx**: 异步数据库库 - **serde**: 序列化/反序列化 - **tokio**: 异步运行时 - **utoipa**: OpenAPI 文档生成 - **tower-http**: HTTP 中间件(CORS、压缩、追踪) - **config**: 配置管理 - **dotenvy**: 环境变量管理 - **uuid**: 生成唯一 ID - **chrono**: 日期时间处理 - **validator**: 数据验证 - **tracing**: 日志追踪