核心功能
核心功能深度解析。
编辑器窗口布局
打开:Window > CodeCarnage > API Mocking Toolkit
三个标签页: Endpoints(集合/文件夹/编辑器)、Sessions(录制/回放)、Environments(选择器/变量/导 入/导出)
左侧面板: 集合选择器、文件夹树、端点列表、+ Endpoint 按钮。
右侧面板: Mock(成功/错误子标签,包含 Body/Headers)和 Response(实时查看器、捕获按钮)。
请求面板: 方法、URL、Headers/Body、发送按钮。变量指示器列出可用的 {{变量}}。
工具栏: 启用、离线模式、集合下拉菜单、导入/导出(OpenAPI 3.0 + x-amt-*)。
响应策略
控制每次调用返回哪个响应:
- Sequential(顺序) – 按顺序读取;根据
LoopResponses标志循环 - RoundRobin(轮询) – 无限循环
- Random(随机) – 均匀随机
商店分页示例
端点:GET /api/shop/items 返回 30 件商品,每页 10 件。
配置:创建 GET /api/shop/items 端点,添加 3 个响应:
响应 1(第 1 页):
{
"items": [
{"id": 1, "name": "Sword", "price": 100},
{"id": 2, "name": "Shield", "price": 80},
...,
{"id": 10, "name": "Potion", "price": 20}
],
"page": 1,
"hasMore": true
}
响应 2(第 2 页):
{
"items": [
{"id": 11, "name": "Helmet", "price": 150},
...,
{"id": 20, "name": "Boots", "price": 60}
],
"page": 2,
"hasMore": true
}
响应 3(第 3 页):
{
"items": [
{"id": 21, "name": "Ring", "price": 200},
...,
{"id": 30, "name": "Amulet", "price": 300}
],
"page": 3,
"hasMore": false
}
将响应策略设置为 Sequential。代码示例:
// 游戏代码
for (int page = 1; page <= 5; page++)
{
var response = await ApiClient.Get("/api/shop/items");
var data = JsonUtility.FromJson<ShopData>(response.Body);
Debug.Log($"第 {page} 页:{data.items.Length} 件商品");
}
// 输出(LoopResponses = true 时):
// 第 1 页:10 件商品(响应 1)
// 第 2 页:10 件商品(响应 2)
// 第 3 页:10 件商品(响应 3)
// 第 4 页:10 件商品(响应 1 - 已循环!)
// 第 5 页:10 件商品(响应 2)
无需后端协调即可完成分页测试。
策略说明:
- Sequential:1 → 2 → 3 → (循环或停止)
- RoundRobin:1 → 2 → 3 → 1 → 2 → 3(永久循环)
- Random:2 → 1 → 3 → 2 → 2 → 1
需要"大部分成功,偶尔失败"时,对 Responses[] 和 ErrorResponses[] 使用 Random 策略。
全局离线模式与端点级模拟切换
全局 离线模式(ApiGlobalConfig)和每端点的 Mock 启用(UseMock)控制路 由。
路由顺序:
ApiGlobalConfig.Enabled关闭 → 真实后端(绕过 toolkit)OfflineMode开启 → 全部模拟(或无匹配端点时失败)OfflineMode关闭 + 匹配端点 +UseMock开启 → 模拟- 否则 → 真实网络
端点级切换允许保留已配置的端点同时路由到真实后端——适用于捕获实时响应或 A/B 测试。
启用离线模式:
Window > CodeCarnage > API Mocking Toolkit
开启 "Offline Mode"
运行时读取:
var config = Resources.Load<ApiGlobalConfig>("ApiGlobalConfig");
bool offline = config.OfflineMode;
适用于无后端开发、无不稳定网络测试、大会演示。