gpt4 book ai didi

java - 我可以在录制时为 WireMock 指定一个 --proxy-all 参数以匹配任何网站吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:48 26 4
gpt4 key购买 nike

我正在构建一个代理服务,以使用 WireMock 记录和播放来自网络的响应。我最近discovered that these two modes are separate ,因此我尝试构建一小组 Docker 容器来并行运行这些服务。

简单地说,我的计划是设置一个 WireMock 用于录制,然后有另一个实例(在不同的端口上)用于播放。我会定期在 cron 上将映射从一个复制到另一个,然后将重置 API 调用发送到播放实例以重新加载新定义。

所以,我目前正在研究录音机。从特定站点进行录制的一种简单方法是执行以下操作:

java -jar wiremock-standalone-2.4.1.jar \
--port 8080 \
--proxy-all="http://www.example.com/" \
--record-mappings \
--verbose

但是,这会将一个长时间运行的实例锁定到 www.example.com,而实际上我希望它记录我发送给它的任何内容。使用不带参数的 --proxy-all 不起作用(它会导致 HTTP 客户端出现 500 错误,可能是由 WireMock 本身发出的)。

另一方面,省略 --proxy-all 会导致 404,因为 WireMock 可能不知道去哪里。因此,我想做类似的事情:

--proxy-all=*

我看不到任何文档说明命令行支持此功能,所以我想知道管理 API 是否支持此功能?我的替代方案是构建自己的 API 以在指定的代理 URL 上停止和重新启动 WireMock,但如果已经实现,我宁愿不重新发明轮子。

正如我在另一个问题中所说,使用 Mountebank 可能是一种选择,因为 it seems to have an API for this .然而,这看起来更复杂,而且由于我已经完成了 WireMock 的 90%,如果可以的话,我打算坚持使用它。

最佳答案

我已经解决了这个问题,方法是在带有自动重启选项的 Supervisor 的外壳包装器中运行 WireMock,然后在 API 上调用 /__admin/shutdown

外壳包装器使用使用 --proxy-all 开关设置的代理目标启动 WireMock。因此,当它关闭时,代理目标会随着它自动恢复而有效地改变。

关于java - 我可以在录制时为 WireMock 指定一个 --proxy-all 参数以匹配任何网站吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41049289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com