我有一个SoapUI REST(即非SOAP)模拟服务,该服务返回POST请求的响应。 请求和响应都包含JSON内容。
目前,我可以让它返回静态响应,并且可以正常工作,但是我希望响应中的某些值可以从请求中动态获取。
因此,如果我有此要求:
{
"the_request":{
"abc":"123",
}
如何获得响应中的“ abc”?
调查使我相信我可以通过在响应中包含一个变量来做到这一点,例如:
响应:
{
"the_response":{
"value_from_request":"${#MockResponse#Request#the_request#abc}",
"other":"stuff",
}
然后通过“脚本”选项卡实现脚本以在响应中填充变量。 然后如何用请求中的数据填充?
当前,SoapUI只是生成一个空值
"value_from_request":"",
在“脚本”选项卡中尝试使用了mockRequest.requestContent,但尚未找到如何从中获取“ 123”值的方法。
答案 0 :(得分:0)
好吧,经过一些实验并将一些东西拼凑在一起,得出了结论。 提出答案,以帮助尝试类似方法的任何人。
因此,响应消息可以像下面这样简单地引用requestContext中的变量:
响应:
{
"the_response":{
"value_from_request":"${the_value}",
"other":"stuff",
}
并且可以使用groovy脚本来解析JSON请求内容,并在requestContext中填充“ the_value”或您喜欢的任何内容:
// Parse the JSON request.
def requestBody = new groovy.json.JsonSlurper().parseText(mockRequest.getRequestContent())
// Set up "the_value" from the request message.
requestContext.the_value = requestBody.the_request.abc
// Bit of logging so can see this in the "script log" tab.
log.info "Value extracted from request: ${requestContext.the_value}"