【问题标题】:How to match request paramters in wire-mock url?如何匹配wiremock url中的请求参数?
【发布时间】:2018-09-08 00:36:15
【问题描述】:

我正在尝试使用wire-mock 创建一个模拟服务器,但遇到了以下问题:我想访问这样的URL /customers?customerId={customerId}&customerNo={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!")));

【问题讨论】:

    标签: java httprequest mockserver


    【解决方案1】:

    查询参数可以在 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()));
    

    【讨论】:

    • 你能帮我举个例子吗?我已经阅读了文档,但我不太了解如何使用它。谢谢。
    • 我已经编辑了这个问题。我已经按照你的建议做了,但似乎不起作用。
    • 你是如何定义你的存根的?
    • 您的 cnp 看起来与存根中定义的不同
    • @DinaBogdan 我明白了。如果您使用 'withQueryParam' 单独定义参数,您可能需要使用 'urlPathEqualTo' 而不是 'urlEqualTo'
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多