如何匹配独立线程中的查询参数键和值?

时间:2017-04-20 09:46:37

标签: json query-parameters wiremock

我想运行独立的wiremock jar文件,并在用户点击特定网址后发送一些json数据。

我创建了一个示例json文件并将其放在我的应用程序的映射目录中。

sample.json

{


 "request":
    {
      "url": "/data?date=date",
      "method": "GET",
      "queryParameters" : {
          "date" : {
            "matches" : "^\\d{4}-\\d{2}-\\d{2}$"
          }
      }
    },

  "response":
    {
      "status": 200,
      "headers":
        {
          "Content-Type" : "application/json"
        },
      "body": "[{\"a\":\"A\",\"b\":\"B\",\"c\":\"C\"},{\"a\":\"A\",\"b\":\"B\",\"c\":\"C\"}]"
    }
}

我想在浏览器中ping下面的url,以便我可以在浏览器上获得json响应。

已编辑的网址

192.168.0.5:8080/data?date=2017-02-02

我正在使用以下命令来运行我的应用程序 -

java -jar wiremock-standalone-2.6.0.jar

我想将查询参数日期值与请求的查询参数日期值匹配。

我无法在浏览器中看到json响应,因为它无法识别请求的URL。

在编写映射json文件时我缺少什么?

如何编写查询参数以便识别我的输入请求并在浏览器上提供json响应?

3 个答案:

答案 0 :(得分:3)

问题在于您如何设置网址格式。您可以直接在url部分或queryParameters块中指定查询参数,但不能同时指定两者。

尝试: “urlPath”:“/ data”

答案 1 :(得分:0)

在我的情况下,我有一个常量字符串查询参数,我使用此方法:

@Rule
public WireMockRule wireMockRule = new WireMockRule(8080);

...

private void stubApiEndPoint() {
    stubFor(get(urlEqualTo("/api/users?id=123&name=Tom"))
        .willReturn(aResponse()
            .withStatus(200)));
}

答案 2 :(得分:0)

一种方法是使用正则表达式 mockMvc.perform(get(uri)).withQueryParam("query_param_name", matching("^(.*)wiremock([A-Za-z]+)$"))

我们也可以将正则表达式用于查询参数名称,以便它可以模拟任何查询参数名称及其值。