stubby4node 逗号分隔的查询字符串实现问题

stubby4node comma separated query string implementation issue

我有一个 URL (GET REQUEST) 以下模式

其中 pathid 查询字符串参数以逗号分隔

我有以下粗短映射来匹配这些 url 模式

- request:
    url: ^/testpath/(.*)/test
    query:
      pathid: '1'
    method: GET
  response:
    headers:
      Content-Type: application/json
    status: 200
    file: response/path-1.json

- request:
    url: ^/testpath/(.*)/test
    query:
      pathid: '1,2'
    method: GET
  response:
    headers:
      Content-Type: application/json
    status: 200
    file: response/path-2.json

- request:
    url: ^/testpath/(.*)/test
    query:
      pathid: '1,2,5'
    method: GET
  response:
    headers:
      Content-Type: application/json
    status: 200
    file: response/path-3.json

但我无法获得此 URL 映射以根据不同的参数组合正确传送不同的有效载荷。

如何做到这一点?

@Sanath,简短回答 - 是的,stubby4j 匹配不同的存根查询参数组合。

几个问题:

  1. 你是什么版本的stubby4j运行?
  2. 此外,您 运行 stubby4j 是作为独立 JAR 还是作为 pre-built stubby4j Docker containers 之一?

我写了一个测试来验证你在问题中提供的 YAML 配置:https://github.com/azagniotov/stubby4j/pull/434/files(请注意,我确实稍微更改了 url,但它仍然是一个类似于你的正则表达式发布 YAML)。

测试发出的请求与存根匹配。 (我确实尝试过不使用 $ 而使用 $,就像@code 建议的那样)。此外,我还针对 运行 独立 JAR 使用 cURL 进行了测试:

curl -X GET  http://localhost:8882/Whosebug/70417269/1/test?pathid=1,2,5

curl -X GET  http://localhost:8882/Whosebug/70417269/1/test?pathid=1,2

再次,我从服务器得到了预期的响应。

如果以上内容对您没有帮助,请随时提出错误报告https://github.com/azagniotov/stubby4j/issues/new/choose

这里的技巧是更改 yaml 文件中 request/response 映射的顺序。

- request:
    url: ^/testpath/(.*)/test
    query:
      **pathid: '1,2,5'**
    method: GET
  response:
    headers:
      Content-Type: application/json
    status: 200
    file: response/path-3.json

- request:
    url: ^/testpath/(.*)/test
    query:
      **pathid: '1,2'**
    method: GET
  response:
    headers:
      Content-Type: application/json
    status: 200
    file: response/path-2.json

- request:
    url: ^/testpath/(.*)/test
    query:
      **pathid: '1'**
    method: GET
  response:
    headers:
      Content-Type: application/json
    status: 200
    file: response/path-1.json

注意添加的路径id是按降序排列的,这样更深的匹配会先执行。

通过这种方式,我能够实现以下要求,即传递以逗号分隔的不同路径 ID

  • 1 -> 负载 1
  • 1,2 -> payload2
  • 1,2,5 -> payload3