首页
/ WireMock Admin API 详解:掌握Mock服务的管理接口

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": "商品已添加到空购物车"
  }
}

最佳实践建议

  1. 合理使用优先级:当有多个stub可能匹配同一请求时,通过priority属性控制匹配顺序

  2. 利用元数据:为stub添加metadata,方便后续查找和管理

  3. 适度使用延迟:测试不同网络条件下的应用表现,但不要过度使用以免影响测试效率

  4. 结合场景功能:对于复杂的业务流程,使用scenario模拟真实的状态转换

  5. 善用录制功能:快速生成基础stub,再手动调整细节

WireMock Admin API为自动化测试和开发提供了强大的支持,通过合理使用这些接口,可以显著提高开发和测试效率,构建更加健壮的应用程序。