我在我的契约(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/