- 将 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>
78 lines
1.9 KiB
Markdown
78 lines
1.9 KiB
Markdown
# 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 <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
|