我正在构建一个代理服务来使用 WireMock 记录和播放来自网络的响应。我最近有发现这两种模式是分开的 https://stackoverflow.com/q/40743569/472495,因此我尝试构建一小组 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 可能是一种选择,因为好像有一个API可以实现这个功能 http://www.mbtest.org/docs/api/proxies。然而,这看起来更复杂,而且由于我已经完成了 WireMock 90% 的工作,所以如果可以的话,我打算坚持下去。
我通过在 Supervisor 的 shell 包装器中运行 WireMock 并使用自动重启选项解决了这个问题,然后调用/__admin/shutdown
在 API 上。
shell 包装器使用代理目标集启动 WireMock--proxy-all
转变。因此,当它关闭时,代理目标会在自动恢复时有效地更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)