Wiremock 捕获响应正文中的路径参数和 return
Wiremock Capture path param and return in the response body
我正在尝试使用 WireMock 创建动态模拟。我有一种情况,如果我指定 URL 像 :
http://localhost:8089/api/account/abc@abc.com
那么我应该会收到这样的回复:
{
"account" : "abc@abc.com"
}
简而言之,路径参数在响应正文中 returned。我可以通过将 urlPathPattern
设置为 /api/account/([a-z]*)
来使请求 URL 通用,但是,我不确定我应该如何捕获 abc@abc.com
和 return使用正则表达式的响应。
在 WireMock 中,正则表达式可用于识别 Request Matching 中的电子邮件格式。出于本示例的目的,我使用了一个非常粗略的示例。您的生产实施可能需要更稳健的方法。
这个请求:
http://localhost:8181/api/account/someone@somewhere.net
符合这条规则:
{
"request": {
"method": "GET",
"urlPathPattern": "/api/account/([a-z]*@[a-z]*.[a-z]*)"
},
"response": {
"status": 200,
"jsonBody": {
"account": "{{request.path.[2]}}"
},
"transformers": ["response-template"],
"headers": {
"Content-Type": "application/json"
}
}
}
并且returns这个回复:
{
"account": "someone@somewhere.net"
}
它利用 Response Template processing functionality in WireMock. The Request Model variables [{{request.path.[2]}}
] 可用于从请求中获取部分。
同样可以使用 WireMock.Net - Response-Templating
规则如下:
{
"Request": {
"Path": {
"Matchers": [
{
"Name": "RegexMatcher",
"Pattern": "^/api/account/([a-z]*@[a-z]*.[a-z]*)$"
}
]
},
"Methods": [
"get"
]
},
"Response": {
"StatusCode": 200,
"BodyAsJson": {
"account": "{{request.PathSegments.[2]}}"
},
"UseTransformer": true,
"Headers": {
"Content-Type": "application/json"
}
}
}
我正在尝试使用 WireMock 创建动态模拟。我有一种情况,如果我指定 URL 像 :
http://localhost:8089/api/account/abc@abc.com
那么我应该会收到这样的回复:
{
"account" : "abc@abc.com"
}
简而言之,路径参数在响应正文中 returned。我可以通过将 urlPathPattern
设置为 /api/account/([a-z]*)
来使请求 URL 通用,但是,我不确定我应该如何捕获 abc@abc.com
和 return使用正则表达式的响应。
在 WireMock 中,正则表达式可用于识别 Request Matching 中的电子邮件格式。出于本示例的目的,我使用了一个非常粗略的示例。您的生产实施可能需要更稳健的方法。
这个请求:
http://localhost:8181/api/account/someone@somewhere.net
符合这条规则:
{
"request": {
"method": "GET",
"urlPathPattern": "/api/account/([a-z]*@[a-z]*.[a-z]*)"
},
"response": {
"status": 200,
"jsonBody": {
"account": "{{request.path.[2]}}"
},
"transformers": ["response-template"],
"headers": {
"Content-Type": "application/json"
}
}
}
并且returns这个回复:
{
"account": "someone@somewhere.net"
}
它利用 Response Template processing functionality in WireMock. The Request Model variables [{{request.path.[2]}}
] 可用于从请求中获取部分。
同样可以使用 WireMock.Net - Response-Templating
规则如下:
{
"Request": {
"Path": {
"Matchers": [
{
"Name": "RegexMatcher",
"Pattern": "^/api/account/([a-z]*@[a-z]*.[a-z]*)$"
}
]
},
"Methods": [
"get"
]
},
"Response": {
"StatusCode": 200,
"BodyAsJson": {
"account": "{{request.PathSegments.[2]}}"
},
"UseTransformer": true,
"Headers": {
"Content-Type": "application/json"
}
}
}