1

我有以下模式的 URL (GET REQUEST)

  • ^/testpath/1/test?pathid=1
  • ^/testpath/1/test?pathid=1,2
  • ^/testpath/1/test?pathid=1,2,5

其中 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 映射根据不同的参数组合正确传递不同的有效负载。

  • 1 -> 有效载荷1
  • 1,2 -> 有效载荷2
  • 1,2,5 -> 有效载荷3

如何才能做到这一点?

4

2 回答 2

1

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

几个问题:

  1. 你运行的是什么版本的 stubby4j?
  2. 此外,您是将 stubby4j 作为独立 JAR 还是作为预构建的 stubby4j Docker 容器之一运行?

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

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

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

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

同样,我从服务器得到了预期的响应。

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

于 2021-12-21T00:03:34.153 回答
0

这里的技巧是更改 yaml 文件中请求/响应映射的顺序。

- 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 -> 有效载荷2
  • 1,2,5 -> 有效载荷3
于 2021-12-23T21:56:16.760 回答