如何在wire-mockurl中匹配请求参数?
How to match request paramters in wire-mock url?
我正在尝试使用 wire-mock 创建一个模拟服务器,但我遇到了以下问题:我想按这样的 URL /customers?customerId={customerId}&customerNo={客户号}。
我的问题是如何在 Java 代码中匹配来自模拟服务器存根的请求参数 customerId 和 customerNo。
编辑
第一次响应后,这是结果:
编辑 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!")));
可以传入查询参数URL。
在Java中:
urlEqualTo("/your/url?and=query")
Json:
{
"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()));
我的问题是 WireMock 以 UTF-8 格式硬编码,因此当从浏览器发出请求时,我没有将 UTF-8 格式发送到端点。您无法将 WireMock 更改为接受任何内容而不是 UTF-8,但您可以触发一些 UTF-8 请求。
我正在尝试使用 wire-mock 创建一个模拟服务器,但我遇到了以下问题:我想按这样的 URL /customers?customerId={customerId}&customerNo={客户号}。
我的问题是如何在 Java 代码中匹配来自模拟服务器存根的请求参数 customerId 和 customerNo。
编辑
第一次响应后,这是结果:
编辑 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!")));
可以传入查询参数URL。
在Java中:
urlEqualTo("/your/url?and=query")
Json:
{
"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()));
我的问题是 WireMock 以 UTF-8 格式硬编码,因此当从浏览器发出请求时,我没有将 UTF-8 格式发送到端点。您无法将 WireMock 更改为接受任何内容而不是 UTF-8,但您可以触发一些 UTF-8 请求。