77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
# 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 <pattern> # 运行匹配的测试(如 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
|