如何使用 Wiremock 中的响应模板使用来自请求的数据设置响应主体值?
How to set response body values using data from request using response templating in Wiremock?
我有这个 JSON 请求-响应定义。请求正文是 text/plain。
{
"request": {
"method": "POST",
"url": "/users",
"bodyPatterns": [
{
"equalTo": "Name Bob Age 30"
}
]
},
"response": {
"status": 200,
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><UsersResponse><Name>Bob</Name><Age>30</Age></UsersResponse>",
"transformers": ["response-template"],
"headers": {
"Content-Type": "text/xml"
}
}
}
我希望 'Bob' 和“30”不是硬编码的,而是作为请求和响应的变量。
因此,如果请求 'Mark' '20' 到达,我想 return
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><UsersResponse><Name>Mark</Name><Age>20</Age></UsersResponse>"
如何实现?
WireMock 和 WireMock.Net 都支持 响应模板:
文档:
然而,这仅限于简单的模板(阅读文档以了解详细信息),无法使用 JSON 映射接口以复杂的方式定义自定义代码或提取数据。
对于 WireMock.Net,您可以自己在 C# 中对其进行硬编码,一个不同的示例可能如下所示:
server.Given(Request.Create().WithPath("/exampleIko"))
.RespondWith(Response.Create().WithCallback(req =>
{
return new ResponseMessage
{
Body = "<xml>" + req.Body.Substring(10) +"</xml>"
};
}));
我有这个 JSON 请求-响应定义。请求正文是 text/plain。
{
"request": {
"method": "POST",
"url": "/users",
"bodyPatterns": [
{
"equalTo": "Name Bob Age 30"
}
]
},
"response": {
"status": 200,
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><UsersResponse><Name>Bob</Name><Age>30</Age></UsersResponse>",
"transformers": ["response-template"],
"headers": {
"Content-Type": "text/xml"
}
}
}
我希望 'Bob' 和“30”不是硬编码的,而是作为请求和响应的变量。 因此,如果请求 'Mark' '20' 到达,我想 return
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><UsersResponse><Name>Mark</Name><Age>20</Age></UsersResponse>"
如何实现?
WireMock 和 WireMock.Net 都支持 响应模板:
文档:
然而,这仅限于简单的模板(阅读文档以了解详细信息),无法使用 JSON 映射接口以复杂的方式定义自定义代码或提取数据。
对于 WireMock.Net,您可以自己在 C# 中对其进行硬编码,一个不同的示例可能如下所示:
server.Given(Request.Create().WithPath("/exampleIko"))
.RespondWith(Response.Create().WithCallback(req =>
{
return new ResponseMessage
{
Body = "<xml>" + req.Body.Substring(10) +"</xml>"
};
}));