用于捕获路径参数和响应的 return 的动态线模
Dynamic wiremock to capture path parameter and return in response
我正在尝试使用 WireMock 创建动态模拟。我有一种情况,如果我指定 URL 喜欢
http://localhost:8989/api/account/121
那么我应该会收到这样的回复:
"cycleSpecification": {
"id": "121"
}
}
简而言之,路径参数在响应主体中 returned,但我不确定如何使用 wiremock 在响应中捕获 121 和 return。
对于这种要求
/myManagement/v1/source?filters=myParty.id==539&&myParty.role==individual
或
/myManagement/v1/source?filters=myParty.id%3D%3D539%26myParty.role%3D%individual
我可以使用什么来响应将过滤掉 id 和角色并放入响应中。
我正在使用独立的 wiremock jar 2.27.2 来创建 wiremock-server。
您可以通过使用响应模板来实现这一点。您需要将 --global-response-templating
添加到您启动独立服务器的方式,然后您可以使用响应模板。
我想你会想要这样的东西:
{
"request" : {
"urlPathPattern" : "/api/account/.*",
"method" : "GET"
},
"response" : {
"status" : 200,
"body" : "{ \"cycleSpecification\": { \"id\": \"{{request.path.[2]}}\" } }"
}
}
Check out the documentation on the request model for more information
对于你的第二个问题,如果查询参数作为单独的查询参数发送,你将能够通过请求模型引用它们。
{
"request" : {
"urlPathPattern" : "/api/account/.*",
"method" : "GET",
"queryParameters": {
"myParty.id" : {
"matches": ".*"
},
"myParty.role": {
"matches": ".*"
}
}
},
"response" : {
"status" : 200,
"body" : "{ \"cycleSpecification\": { \"id\": \"{{request.query.party.id}}\" } }"
}
}
由于您的查询参数看起来不像是单独发送的,很遗憾,我认为您需要 create a transformer 来修改您的响应。
我正在尝试使用 WireMock 创建动态模拟。我有一种情况,如果我指定 URL 喜欢
http://localhost:8989/api/account/121
那么我应该会收到这样的回复:
"cycleSpecification": {
"id": "121"
}
}
简而言之,路径参数在响应主体中 returned,但我不确定如何使用 wiremock 在响应中捕获 121 和 return。
对于这种要求
/myManagement/v1/source?filters=myParty.id==539&&myParty.role==individual
或
/myManagement/v1/source?filters=myParty.id%3D%3D539%26myParty.role%3D%individual
我可以使用什么来响应将过滤掉 id 和角色并放入响应中。
我正在使用独立的 wiremock jar 2.27.2 来创建 wiremock-server。
您可以通过使用响应模板来实现这一点。您需要将 --global-response-templating
添加到您启动独立服务器的方式,然后您可以使用响应模板。
我想你会想要这样的东西:
{
"request" : {
"urlPathPattern" : "/api/account/.*",
"method" : "GET"
},
"response" : {
"status" : 200,
"body" : "{ \"cycleSpecification\": { \"id\": \"{{request.path.[2]}}\" } }"
}
}
Check out the documentation on the request model for more information
对于你的第二个问题,如果查询参数作为单独的查询参数发送,你将能够通过请求模型引用它们。
{
"request" : {
"urlPathPattern" : "/api/account/.*",
"method" : "GET",
"queryParameters": {
"myParty.id" : {
"matches": ".*"
},
"myParty.role": {
"matches": ".*"
}
}
},
"response" : {
"status" : 200,
"body" : "{ \"cycleSpecification\": { \"id\": \"{{request.query.party.id}}\" } }"
}
}
由于您的查询参数看起来不像是单独发送的,很遗憾,我认为您需要 create a transformer 来修改您的响应。