【问题标题】:How can I specify optional Query Parameters如何指定可选的查询参数
【发布时间】:2017-08-25 15:17:53
【问题描述】:

我在合同中定义了查询参数。我需要这个参数是可选的:

method 'GET'
    url($(regex(urlRegex))) {
        queryParameters {
            parameter 'fitler': $(stub(regex(filterRegex)))
        }
}

我希望此合同适用于带有 /my/sample/url?fitler=some-filter-expression 之类的过滤器和没有 /my/sample/url 之类的过滤器参数的两个 URL。

我怎样才能做到这一点?这甚至可能吗?

【问题讨论】:

  • 你做到了吗?我现在正在处理同样的问题
  • 我也有同样的问题。我在研究中发现,只需为该查询参数的存在或不存在创建多个合同:|
  • spring cloud contract在后台使用了wiremock,而且wiremock好像不支持可选查询参数:groups.google.com/forum/#!topic/wiremock-user/WKMkb_LhJTU

标签: java wiremock spring-cloud-contract


【解决方案1】:

到目前为止,这在 WireMock 规范中没有明确定义。但是,您有一个使用正则表达式的解决方法,通过使用 urlPathPattern 属性(在 JSON 存根中)指定 URL。请参考以下示例。

{
    "request": {
        "method": "GET",
        "urlPathPattern": "/myapp/users(\\?((a-zA-Z\\d\\_\\-)+\\=(a-zA-Z\\d\\_\\-)+)(\\&(a-zA-Z\\d\\_\\-)+\\=(a-zA-Z\\d\\_\\-)+)+)?"
    },
    "response": {
        "status": 200,
            "bodyFileName": "users.json",
            "headers": {
            "Content-Type": "application/json"
        }
    }
}

观察 URL 末尾的可选部分,它查找典型的 URL 查询结构。这个,我在wiremock中试过了,运行流畅。

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2021-06-08
    • 2011-03-25
    • 1970-01-01
    • 2016-11-15
    • 2012-06-21
    • 2010-09-10
    • 1970-01-01
    • 2014-01-27
    相关资源
    最近更新 更多