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

如何配置WireMock录制完整请求而非仅请求哈希?

解决WireMock录制完整请求及请求不匹配问题

调整录制配置,生成基于完整请求的Stub

你当前的RecordSpec配置虽然用了SnapshotOutputFormatter.FULL,但缺少对请求体匹配规则的明确配置,导致录制时可能依赖哈希头而非完整请求体。可以通过以下方式调整:

方式1:使用SnapshotRecordSpecBuilder构建(更直观)

import static com.github.tomakehurst.wiremock.matching.HeaderMatchers.ignore;
import static com.github.tomakehurst.wiremock.matching.RequestPatternMatchers.equalToJson;

// 构建录制规范
var spec = SnapshotRecordSpecBuilder.forTarget("你的目标服务地址")
    .headersToRecord(headers) // 保持你原来要录制的头集合
    .headerMatcher("x-abc-body-hash", ignore()) // 忽略该哈希头的匹配
    .requestPatternMatcher(equalToJson()) // 基于JSON请求体内容匹配(非JSON可改用equalTo)
    .outputFormat(SnapshotOutputFormatter.FULL)
    .build();

方式2:直接修改现有RecordSpec

如果坚持使用原有构造方式,需补充请求体匹配规则并忽略哈希头:

import com.github.tomakehurst.wiremock.matching.IgnoreHeaderMatcher;
import com.github.tomakehurst.wiremock.matching.EqualToPattern;

// 定义要匹配的头,忽略x-abc-body-hash
var headersToMatch = new HashMap<String, HeaderMatcher>();
// 添加你需要匹配的其他头(比如Content-Type)
headersToMatch.put("Content-Type", new EqualToHeaderMatcher("application/json"));
// 忽略哈希头
headersToMatch.put("x-abc-body-hash", new IgnoreHeaderMatcher());

var spec = new RecordSpec(
    null,
    null,
    headers,
    (r -> new EqualToPattern(r.getBodyAsString())), // 基于请求体字符串匹配
    headersToMatch,
    SnapshotOutputFormatter.FULL,
    false,
    true,
    null,
    null
);

启用调试,查看完整请求体

1. 开启WireMock调试日志

在日志配置中添加DEBUG级别日志,即可看到完整的请求、响应及匹配过程:

<!-- Logback示例配置 -->
<logger name="com.github.tomakehurst.wiremock" level="DEBUG" />

或在代码中启用控制台通知:

WireMock.configureFor("localhost", 你的WireMock端口);
WireMock.configure().notifier(new ConsoleNotifier(true)); // 控制台输出调试信息

2. 通过WireMock管理界面查看

访问WireMock的管理端点(默认http://localhost:端口/__admin),在Requests标签下可以查看所有收到的请求详情,包括完整请求体、请求头和查询参数。

解决x-abc-body-hash不匹配问题

你遇到的错误是因为录制的Stub中包含了该哈希头的匹配规则,但实际请求的哈希值与录制时不同。通过上述配置中ignore()该头的匹配规则,即可避免因哈希不一致导致的请求不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:52:23