# mock-server 基于 Rust/Axum 的配置驱动型 Mock 服务,支持 YAML 配置、请求匹配、热重载、延迟响应、大文件流式返回等特性。 ## 特性 - **配置驱动**:YAML 定义 API 行为,无需修改代码 - **热重载**:`mocks/*.yaml` 变更自动生效,无需重启服务 - **高性能**:基于 Rust 异步运行时,路径首段哈希索引 O(1) 匹配 - **低内存**:大响应体支持 `file://` 协议从磁盘流式读取 - **请求匹配**:支持 method、path、headers、query_params、body 多维度匹配 ## 快速开始 ### 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 # 统一请求处理器,文件流式响应 tests/ # 集成测试(每个模块一个测试文件) mocks/ # YAML Mock 配置文件 ``` ## Mock 配置 详细配置规范请参考 [.claude/rules/mock-spec.md](.claude/rules/mock-spec.md) ## 未来计划 ### 1. 动态参数与模板响应 支持路径参数捕获(如 `/api/users/{id}`)和响应模板,可在响应中引用请求参数: ```yaml # 请求: GET /api/users/123 # 响应: { "id": "123", "name": "User 123" } ``` ### 2. HTTPS 支持 内置 TLS/SSL 支持,提供安全的 HTTPS 服务。 ### 3. 可视化管理界面 - **TUI(终端界面)**:基于 Ratatui 的交互式终端管理 - **GUI(图形界面)**:Web Dashboard 或桌面应用,可视化管理 Mock 规则 > 此功能需要深入讨论,欢迎提出建议和需求 ## 许可证 MIT