java - 如何指定可选的查询参数

标签 java wiremock spring-cloud-contract

我在我的契约(Contract)中定义了查询参数。我需要这个参数是可选的:

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

我希望此契约(Contract)适用于带有 /my/sample/url?fitler=some-filter-expression 这样的过滤器的 URL 和没有像 /my/这样的过滤器参数的 URL示例/网址

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

最佳答案

到目前为止,这在 WireMock 规范中没有定义明确的方式。但是,您有一个使用正则表达式的解决方法,方法是使用 urlPathPattern 属性(在 JSON stub 中)指定 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 上试过了,运行很流畅。

关于java - 如何指定可选的查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884590/

相关文章:

java - 流口水 hello world Maven 依赖项

spring - 如何从同一端口上的spring boot应用程序启动wiremock服务器?

java - 如何在 Wiremock Servlet 上启用响应模板?

java - spring cloud contract dsl 指定路径参数

gradle - 从 Spring Contract 的合约和基类测试的默认 "test"目录更改

java - Maven 资源未包含在内

java - IntelliJ IDEA 和 Gradle - 无法应用于 '(groovy.lang.Closure)'

java - Wiremock 代理记录功能 - 它可以替代响应中的 Host 或 IP 吗?

java - Spring Cloud Contract 和两个既是生产者又是消费者的服务

Java JTextArea 与 JMenuItem 重叠