如何用一个正则表达式拦截 100 多个非常相似的请求?

问题描述 投票:0回答:1

我有非常相似的请求(肥皂),但略有不同。我的正则表达式单独工作,但是当我将映射部署到服务器时,错误的正则表达式总是有效。我的印象是他只选择了第一个合适的。我在在线正则表达式生成器中测试了我的正则表达式,不应该有任何混淆,但它在wiremock上不起作用。

不幸的是,我无法发布任何细节,但我已经以这种形式设置了我的映射:

.
.
.
"bodyPatterns": [
    {
        "matches": "1abcdf"
    }
]
.
.
.
"bodyPatterns": [
    {
        "matches": "4abcdf"
    }
]
.
.
.
"bodyPatterns": [
    {
        "matches": "10abcdf"
    }
]
java soap wiremock wiremock-standalone wiremock-record
1个回答
0
投票

TBOMK,WireMock 采用最佳匹配请求,如果多个匹配,它会选择最近添加的请求。如果您想在这种情况下对请求进行优先级排序,可以将其添加到存根(https://wiremock.org/docs/stubbing/#stub-priority)。所以从你的描述来看,听起来所有请求都匹配,所以它需要最后一个。

对于主体模式:这是一个数组,因此如果有多个匹配,WireMock 会聚合结果,帮助您缩小结果范围(以防存在部分匹配)。也许这是改善比赛的一个选择。

此外,我建议您尝试将

XPath
与 WireMock 一起使用( https://wiremock.org/docs/request-matching/#xpath + https://wiremock.org/docs/request-matching /#combining-date-matchers-as-jsonpathxpath-sub-matchers )创建更精确的匹配。

您还可以增加详细程度,以获取有关为什么选择存根的一些信息并改进您的匹配逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.