如何匹配有线模拟URL中的请求参数?

时间:2018-03-29 06:38:02

标签: java httprequest mockserver

我尝试使用wire-mock创建模拟服务器,我面临以下问题:我想点击这样的/客户网址?customerId = {customerId}& customerNo = { customerNo}。

我的问题是如何在Java代码中匹配来自模拟服务器存根的请求参数customerId和customerNo。

修改

第一次回复后,结果如下:

enter image description here

编辑2

这是我的存根:

WireMockServer mockServer = new WireMockServer(8079);
    mockServer.start();
    mockServer.stubFor(get(urlEqualTo("/api/loan/admin/contracts"))
            .withQueryParam("status", equalTo("ACTIVE"))
            .withQueryParam("cnp", equalTo("1950503410033"))
            .willReturn(aResponse().withBody("Welcome to Baeldung!")));

2 个答案:

答案 0 :(得分:0)

查询参数可以在URL中传递。

在Java中:

urlEqualTo("/your/url?and=query")
杰森:

{
  "request": {
    "url": "/your/url?and=query"
    ...
  },
  ...
}

参考:http://wiremock.org/docs/request-matching/

实施例: 请尝试以下任何一种方法:

stubFor(any(urlEqualTo("/customers?customerId={your_customer_id}&customerNo={your_customer_no}"))
          .willReturn(aResponse()));


stubFor(any(urlPathEqualTo("/customers"))
          .withQueryParam("customerId", equalTo("your_customer_id"))
          .withQueryParam("customerNo", equalTo("your_customer_no"))
          .willReturn(aResponse()));

答案 1 :(得分:0)

我的问题是WireMock是以UTF-8格式硬编码的,所以当从浏览器发出请求时,我没有将UTF-8格式发送到端点。您无法将WireMock更改为接受任何内容而不是UTF-8,但您可以触发一些UTF-8请求。