stubby4node 逗号分隔的查询字符串实现问题
stubby4node comma separated query string implementation issue
我有一个 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 -> payload2
- 1,2,5 -> payload3
如何做到这一点?
@Sanath,简短回答 - 是的,stubby4j 匹配不同的存根查询参数组合。
几个问题:
- 你是什么版本的stubby4j运行?
- 此外,您 运行 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
我有一个 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 -> payload2
- 1,2,5 -> payload3
如何做到这一点?
@Sanath,简短回答 - 是的,stubby4j 匹配不同的存根查询参数组合。
几个问题:
- 你是什么版本的stubby4j运行?
- 此外,您 运行 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