You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WireMock路径参数匹配问题:求可匹配任意路径参数(最终为UUID)的urlPathPattern正则表达式

WireMock匹配带UUID路径参数的POST请求解决方案

我来帮你解决这个WireMock的匹配问题~你之前用的urlPathPattern: "/ngdms/orders/*"之所以不生效,是因为WireMock的urlPathPattern采用的是Java正则表达式语法,而这里的*在正则里不是“任意字符通配”的意思——它表示的是“前面的字符出现0次或多次”,所以你的配置其实是匹配/ngdms/orders后面跟着0个或多个/,自然匹配不上带UUID的路径啦。

下面给你两种可行的方案:

方案1:匹配任意格式的order-id(宽松匹配)

如果不需要严格校验order-id是UUID,只是想匹配/ngdms/orders/后面跟任意非空内容的请求,可以用.+正则(.匹配任意单个字符,+表示至少出现一次):

{
  "request": {
    "method": "POST",
    "urlPathPattern": "/ngdms/orders/.+"
  },
  "response": {
    "status": 200,
    "body": "Order processed successfully",
    "headers": {
      "Content-Type": "application/json"
    }
  }
}

方案2:严格匹配UUID格式的order-id

如果需要确保order-id是标准的UUID(比如你示例里的b41a627e-6981-403a-94cd-c225b8036ef1这种8-4-4-4-12的十六进制格式),可以用精准的UUID正则表达式:

{
  "request": {
    "method": "POST",
    "urlPathPattern": "/ngdms/orders/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"
  },
  "response": {
    "status": 200,
    "body": "UUID format order processed successfully",
    "headers": {
      "Content-Type": "application/json"
    }
  }
}

这个正则的含义是:

  • [0-9a-fA-F]:匹配任意十六进制字符(大小写都支持)
  • {8}/{4}等:指定前面的字符出现的次数,对应UUID各段的长度

这样配置后,WireMock就能正确匹配你的POST请求啦。

内容的提问来源于stack exchange,提问作者greengold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:22:42