docs: 重构项目文档结构
- 将 CLAUDE.md 移至 .claude/ 目录,精简为 AI 开发指南 - 扩充 README.md 为完整的用户文档 - 新增 rules/mock-spec.md: YAML 配置生成规范 - 新增 rules/commit-spec.md: Git 提交消息格式规范 - 从 .gitignore 移除 .claude/ 目录以便跟踪 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
78
README.md
78
README.md
@@ -1,11 +1,77 @@
|
||||
# mock-server
|
||||
基于Rust/Axum的配置驱动型Mock服务,支持YAML配置、请求匹配、延迟响应、大文件流式返回等特性。
|
||||
|
||||
基于 Rust/Axum 的配置驱动型 Mock 服务,支持 YAML 配置、请求匹配、热重载、延迟响应、大文件流式返回等特性。
|
||||
|
||||
## 特性
|
||||
- 配置驱动:YAML定义API行为,无需修改代码
|
||||
- 高性能:基于Rust异步运行时,哈希索引匹配请求
|
||||
- 低内存:大响应体支持磁盘文件流式读取,不占用常驻内存
|
||||
- 易扩展:模块化设计,支持动态占位符、热加载(规划中)
|
||||
|
||||
- **配置驱动**:YAML 定义 API 行为,无需修改代码
|
||||
- **热重载**:`mocks/*.yaml` 变更自动生效,无需重启服务
|
||||
- **高性能**:基于 Rust 异步运行时,路径首段哈希索引 O(1) 匹配
|
||||
- **低内存**:大响应体支持 `file://` 协议从磁盘流式读取
|
||||
- **文件上传**:内置 `/api/upload` 端点,按日期分目录存储
|
||||
|
||||
## 快速开始
|
||||
### 1. 安装依赖
|
||||
|
||||
### 1. 安装依赖
|
||||
|
||||
确保已安装 Rust 工具链:
|
||||
|
||||
```bash
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||
```
|
||||
|
||||
### 2. 构建与运行
|
||||
|
||||
```bash
|
||||
cargo build # 构建项目
|
||||
cargo run # 启动服务 http://127.0.0.1:8080
|
||||
cargo test # 运行所有测试
|
||||
cargo test <pattern> # 运行匹配的测试(如 cargo test router)
|
||||
cargo clippy # 代码检查
|
||||
cargo fmt # 格式化代码
|
||||
```
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── main.rs # 入口,热重载监听,Axum 路由配置
|
||||
├── config.rs # 数据结构定义(MockRule, RequestMatcher 等)
|
||||
├── loader.rs # YAML 解析,目录扫描
|
||||
├── router.rs # 路径首段索引,匹配逻辑
|
||||
├── handler.rs # 统一请求处理器,文件流式响应
|
||||
└── upload.rs # Multipart 文件上传处理
|
||||
|
||||
tests/ # 集成测试(每个模块一个测试文件)
|
||||
mocks/ # YAML Mock 配置文件
|
||||
storage/ # 上传文件存储(按 YYYY-MM-DD 分目录)
|
||||
```
|
||||
|
||||
## Mock 配置
|
||||
|
||||
详细配置规范请参考 [.claude/rules/mock-spec.md](.claude/rules/mock-spec.md)
|
||||
|
||||
## API
|
||||
|
||||
### 文件上传
|
||||
|
||||
```http
|
||||
POST /api/upload
|
||||
Content-Type: multipart/form-data
|
||||
|
||||
file: <binary>
|
||||
```
|
||||
|
||||
**响应示例:**
|
||||
|
||||
```json
|
||||
{
|
||||
"filename": "example.txt",
|
||||
"path": "storage/2024-01-15/example.txt",
|
||||
"size": 1024
|
||||
}
|
||||
```
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user