WireMock Admin API 详解:掌握Mock服务的管理接口
2025-07-07 05:28:03作者:何将鹤
什么是WireMock Admin API
WireMock是一个流行的HTTP模拟服务工具,而Admin API则是其提供的RESTful管理接口,允许开发者以编程方式配置和控制WireMock实例。通过这个API,我们可以动态创建、修改和删除stub映射,查询接收到的请求,管理场景状态等。
API核心功能模块
1. Stub Mappings(桩映射管理)
这是WireMock最核心的功能模块,用于管理请求与响应之间的映射规则。主要操作包括:
- 获取所有stub映射(GET /__admin/mappings)
- 创建新映射(POST /__admin/mappings)
- 按ID获取特定映射(GET /__admin/mappings/{id})
- 更新映射(PUT /__admin/mappings/{id})
- 删除映射(DELETE /__admin/mappings/{id})
每个stub映射包含以下关键属性:
- request:定义匹配条件(方法、URL、头信息、查询参数等)
- response:定义返回内容(状态码、头信息、响应体等)
- priority:优先级设置(数值越小优先级越高)
- scenario:场景状态相关配置(用于实现有状态行为)
2. Requests(请求记录)
此模块用于查询WireMock接收到的历史请求信息:
- 获取所有记录的请求(GET /__admin/requests)
- 按条件查找请求(POST /__admin/requests/find)
- 删除请求记录(DELETE /__admin/requests)
- 按ID获取特定请求(GET /__admin/requests/{id})
3. Near Misses(近似匹配)
近似匹配功能可以帮助开发者找出"差一点"就能匹配的请求,对于调试非常有用:
- 查找与请求模式最接近的stub(POST /__admin/near-misses/request-pattern)
- 查找与stub最接近的请求(POST /__admin/near-misses/request)
4. Recordings(录制功能)
WireMock的录制功能可以捕获真实API的响应并自动生成stub:
- 开始录制(POST /__admin/recordings/start)
- 停止录制并保存stub(POST /__admin/recordings/stop)
- 获取录制状态(GET /__admin/recordings/status)
- 生成快照(POST /__admin/recordings/snapshot)
5. Scenarios(场景管理)
场景功能允许模拟有状态的行为:
- 获取所有场景状态(GET /__admin/scenarios)
- 重置所有场景(POST /__admin/scenarios/reset)
6. System(系统操作)
提供全局管理功能:
- 关闭WireMock(POST /__admin/shutdown)
- 重置所有stub和请求(POST /__admin/reset)
- 获取配置信息(GET /__admin/config)
实际应用示例
创建基本Stub映射
{
"request": {
"method": "GET",
"url": "/api/users"
},
"response": {
"status": 200,
"jsonBody": [
{"id": 1, "name": "张三"},
{"id": 2, "name": "李四"}
],
"headers": {
"Content-Type": "application/json"
}
}
}
创建带延迟的响应
{
"request": {
"method": "GET",
"url": "/api/slow"
},
"response": {
"status": 200,
"body": "响应将延迟2秒",
"fixedDelayMilliseconds": 2000
}
}
创建基于场景的响应
{
"scenarioName": "购物车状态",
"requiredScenarioState": "空购物车",
"newScenarioState": "有商品",
"request": {
"method": "POST",
"url": "/api/cart/add"
},
"response": {
"status": 200,
"body": "商品已添加到空购物车"
}
}
最佳实践建议
-
合理使用优先级:当有多个stub可能匹配同一请求时,通过priority属性控制匹配顺序
-
利用元数据:为stub添加metadata,方便后续查找和管理
-
适度使用延迟:测试不同网络条件下的应用表现,但不要过度使用以免影响测试效率
-
结合场景功能:对于复杂的业务流程,使用scenario模拟真实的状态转换
-
善用录制功能:快速生成基础stub,再手动调整细节
WireMock Admin API为自动化测试和开发提供了强大的支持,通过合理使用这些接口,可以显著提高开发和测试效率,构建更加健壮的应用程序。