Wiremock中含查询参数的urlPattern正则匹配问题求助
Wiremock URL正则匹配解决方案
正确的正则表达式
使用以下正则可同时匹配两种URL:
^/household/[^/]+/entitlements(\\?.*)?$
正则说明
^和$:锚定整个URL路径,避免部分匹配无关路径/household/[^/]+/entitlements:匹配固定路径+UUID部分([^/]+精准匹配不含斜杠的UUID,比.+更安全,不会过度匹配)(\\?.*)?:可选的查询参数部分,其中:\\?:JSON配置中需双重转义反斜杠,才能正确表示正则里的查询参数起始符?.*:匹配任意查询参数内容(若需精准匹配includeFutureDated=true,可替换为\\?includeFutureDated=true)- 最后的
?表示该部分可选,同时支持有无查询参数的URL
完整配置示例
{ "scenarioName": "CPM Get Entitlements:Error - CPM_10000 - DOWNSTREAM_ERROR - Status 500", "request": { "method": "GET", "urlPattern": "^/household/[^/]+/entitlements(\\?.*)?$" }, "response": { "status": 500, "body": "{\"code\": \"CPM_10000\",\"description\": \"some description\"}" } }
之前匹配失败的原因
- 转义错误:JSON配置文件中,正则特殊字符(如
?)需用双重反斜杠\\转义,直接写?会被JSON解析器当成特殊字符处理,而非正则的一部分 - 过度匹配风险:使用
.+可能匹配到含额外斜杠的错误路径(比如/household/xxx/entitlements/yyy),[^/]+的匹配范围更精准 - 未锚定匹配范围:缺少
^和$可能导致Wiremock匹配到包含目标路径的更长URL,锚定后确保只匹配完整的目标路径
内容的提问来源于stack exchange,提问作者user2232357
相关产品推荐
相关产品推荐

