You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wiremock:根据请求参数选择响应体文件名

根据请求参数动态返回对应JSON响应的Wiremock Stub实现

我明白你想要实现的是根据请求里的key参数,动态返回对应的JSON响应文件对吧?这在Wiremock里有两种实现方式,你可以根据需求场景灵活选择:

方式一:响应模板(推荐,适合多key场景)

这种方式不用为每个key单独编写Stub,通过Wiremock的响应模板功能动态拼接文件名,高效又简洁。

步骤1:启用响应模板功能

在创建Wiremock服务器时,需要添加响应模板扩展:

WireMockServer myMockServer = new WireMockServer(
    wireMockConfig().extensions(new ResponseTemplateTransformer(false))
);
myMockServer.start();

这里的false表示仅在需要的Stub中启用模板,若设为true则全局启用所有Stub的模板解析。

步骤2:编写动态匹配的Stub

String myEndPoint = "/your-api-endpoint"; // 替换成你的实际接口路径

myMockServer.stubFor(get(urlPathEqualTo(myEndPoint))
        // 匹配任意key参数值,若需限定特定key可改成matching("key1|key2")
        .withQueryParam("key", matching(".*"))
        .willReturn(aResponse()
                .withStatus(200)
                .withHeader("Content-Type", "application/json")
                // 通过模板语法获取请求的key参数,动态拼接响应文件名
                .withBodyFile("response_{{request.query.key}}.json")
                // 启用当前Stub的模板转换功能
                .withTransformers("response-template")));

关键说明

  • 确保你的JSON响应文件(比如response_key1.json、response_key2.json)放在Wiremock默认的文件目录src/test/resources/__files下;
  • {{request.query.key}}是Wiremock的模板表达式,会自动提取请求URL中key参数的值;
  • 如果需要对key参数做更严格的校验,可以修改matching()里的正则表达式,比如只允许数字后缀的key:matching("key\\d+")。

方式二:单独Stub匹配(适合少量key场景)

如果你的key数量不多,也可以为每个key单独编写Stub,逻辑更直观:

String myEndPoint = "/your-api-endpoint";

// 匹配key=key1的请求
myMockServer.stubFor(get(urlEqualTo(myEndPoint + "?key=key1"))
        .willReturn(aResponse()
                .withStatus(200)
                .withHeader("Content-Type", "application/json")
                .withBodyFile("response_key1.json")));

// 匹配key=key2的请求
myMockServer.stubFor(get(urlEqualTo(myEndPoint + "?key=key2"))
        .willReturn(aResponse()
                .withStatus(200)
                .withHeader("Content-Type", "application/json")
                .withBodyFile("response_key2.json")));

内容的提问来源于stack exchange,提问作者Kumar Gaurav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:40:37