Java Wiremock-从URL获取字符串,修改它并将其作为正文的一部分返回
我正在处理一些工作中的负载测试场景,我在弄清楚如何使用Wiremock实现这一点时遇到了一些问题 基本上就是这样。我有一段代码,它使一个Java Wiremock-从URL获取字符串,修改它并将其作为正文的一部分返回,java,mocking,wiremock,Java,Mocking,Wiremock,我正在处理一些工作中的负载测试场景,我在弄清楚如何使用Wiremock实现这一点时遇到了一些问题 基本上就是这样。我有一段代码,它使一个GET到达一个看起来像/api/1/external/client/1234%12LT的端点,我想抓住最后一部分,去掉%(包括在内)后面的所有内容,只返回前面的数字,作为非常简单的JSON{“id:“1234”}的一部分 我一直在阅读有关响应模板化的内容,并通过在命令行上传递标志--global Response Templating在我的独立实例上启用了它。我
GET
到达一个看起来像/api/1/external/client/1234%12LT
的端点,我想抓住最后一部分,去掉%
(包括在内)后面的所有内容,只返回前面的数字,作为非常简单的JSON{“id:“1234”}
的一部分
我一直在阅读有关响应模板化的内容,并通过在命令行上传递标志--global Response Templating
在我的独立实例上启用了它。我认为它是有效的,因为如果我使用{{randomValue length=10 type='NUMERIC'}}
之类的东西将它设置为返回一个随机值,它实际上返回一个随机数
我认为应该结合使用request.requestLine.pathSegments.[4]
来获取URL的最后一段,然后使用正则表达式提取器{{regexExtract request.body'[a-Z]+'}}{/code>(不是实际的代码,示例取自文档)获取第一个数字部分,但尚未成功使其工作
我的模拟代码如下所示:
{
"request": {
"urlPattern": "/api/1/example/endpoint/.*",
"method": "GET"
},
"response": {
"status": "200",
"headers": {
"Content-Type": "application/json; charset=utf-8"
},
"jsonBody": {
"id": "{{request.requestLine.pathSegments.[4]}}"
}
}
}
有人能告诉我哪里出了问题吗
还有一个问题,你通常是如何调试的?我已经看过了文档,不确定如何将信息打印到日志中,以查看我尝试进行的替换是否实际有效,或者到达端点的内容是否是我假设应该得到的
谢谢。假设您在启用全局响应模板的情况下启动WireMock实例,然后使用以下映射:
{
"request": {
"urlPattern": "/api/1/external/client/.*",
"method": "GET"
},
"response": {
"status": "200",
"headers": {
"Content-Type": "application/json; charset=utf-8"
},
"jsonBody": {
"id": "{{regexExtract request.requestLine.pathSegments.[4] '[0-9]*'}}"
}
}
}
给定以下URL:
http://localhost:8080/api/1/external/client/1234%12LT
答复将是:
{
"id": "1234"
}
看起来我的助手本身有问题。在日志中获取此信息:wiremock.com.github.jknack.handlebars.handlebars异常:inline@712556c0:1:13:找不到帮助程序:“regexExtract”
。可能我使用的是旧版本或其他什么?我正在尝试找出支持该功能的最低版本,但到目前为止运气不佳。Th我使用的是e版本,最新版本的下载链接可以在文档中找到:。是的,看起来我们使用的是2.22.something。我会研究更新它。同时…你知道有没有一种方法可以做类似的事情,但只是通过操纵字符串?我可以正确获得路径中的第四段,如果我可以的话不要在%处拆分它,或者在第n个字符之后修剪所有内容就足够了。