我在Scala 2.13项目中使用Wiremock 2.28.1,我想跳过在Wiremock中记录特定请求/响应,因为它们只是针对health/ready
和health/alive
端点的活跃/就绪HTTP调用:
{
"mappings": [
{
"request": {
"method": "GET",
"url": "/api/v1/health/ready"
},
"response": {
"status": 200,
"body": "",
"headers": {
"Content-Type": "text/plain"
}
}
},
{
"request": {
"method": "GET",
"url": "/api/v1/health/alive"
},
"response": {
"status": 200,
"body": "",
"headers": {
"Content-Type": "text/plain"
}
}
}
]
}
WireMock服务器配置为:
new WireMockConfiguration()
.bindAddress(configOptions.host)
.port(configOptions.port)
.stubCorsEnabled(configOptions.enableCors)
.disableRequestJournal() // avoid JVM heap exhaustion for recorded requests
.usingFilesUnderClasspath(s"$confBasePath/${configOptions.mappingsFolder}")
.notifier(new ConsoleNotifier(configOptions.verboseNotifier)) // <-- TRUE
.httpsPort(...)
有没有办法告诉WireMock跳过记录/health/*
API调用?
有几种方法可以做到这一点:
-
编写自己的
Notifier
实现,根据消息的内容过滤消息,并在启动选项中使用它来代替ConsoleNotifier
。 -
通过实现
AdminApiExtension
并将其注册到启动选项中,使healthcheck成为管理员API函数(这意味着URL必须位于/__admin/
下。