# mock-server 基于 Rust/Axum 的配置驱动型 Mock 服务,支持 YAML 配置、请求匹配、热重载、延迟响应、大文件流式返回等特性。 ## 特性 - **配置驱动**:YAML 定义 API 行为,无需修改代码 - **热重载**:`mocks/*.yaml` 变更自动生效,无需重启服务 - **高性能**:基于 Rust 异步运行时,路径首段哈希索引 O(1) 匹配 - **低内存**:大响应体支持 `file://` 协议从磁盘流式读取 - **文件上传**:内置 `/api/upload` 端点,按日期分目录存储 ## 快速开始 ### 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 # 运行匹配的测试(如 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: ``` **响应示例:** ```json { "filename": "example.txt", "path": "storage/2024-01-15/example.txt", "size": 1024 } ``` ## 许可证 MIT