问题:如何提取整个restAPI响应并使用某些值对其进行修改,并使用更新后的响应进行后续休息调用。我正在使用Jmeter
我有一个POST电话:“/ check1 / id1 / post”
POST正文:
{
"test":"rest",
"check" :{
"id":1,
"name": "xyz"
"status":"updated"
}
}
POST呼叫响应:
{
"test":"rest",
"check" :{
"id":2,
"name": "xyz"
"status":"updated"
}
}
=============================================== ======================
问题:现在,我必须在下一个POST Call主体中使用整个上面的RESPONSE,如下所示,但是,我想将“id”值更新为2,然后需要POST休息调用。
REST CALL:------> “/ CHECK1 / ID2 /后” POST BODY如下:------->
{{1}}
=============================================== ==============
有人可以请指导吗? ,我对如何解决这个问题一无所知?,我需要用Jmeter来解决这个问题。
答案 0 :(得分:0)
您可以使用beanshell或JSR223 PreProcessor
执行此操作假设有效的JSON
{
"test":"rest",
"check" :{
"id":1,
"name": "xyz",
"status":"updated"
}
}
以下是步骤
将以下代码添加到预处理器
导入groovy.json.JsonBuilder
导入groovy.json.JsonSlurper
def slurped = new JsonSlurper()。parse(prev.getResponseData())
def builder = new JsonBuilder(slurped) builder.content.check.id ='2' vars.put( “POSTDATA”,builder.toPrettyString())
上面的代码将使用2更新ID值并将JSON存储在POSTDATA中,您可以使用${POSTDATA}
发布JSON文件
在我的预处理器中,我使用prev.getResponseData()
保存响应,这意味着此预处理器必须包含在第一个采样器旁边的采样器中。
有关beanshell的更多信息请点击this link
答案 1 :(得分:0)
存储整个回复:
按如下方式配置:
response
(?s)(^.*)
$1$
1
替换为2
,您可以选择${__strReplace(${response},1,2,)}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Term Deposit Interest Calculator</title>
<link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />
<script>
function validateform(){
var amount=document.myform.amount.value;
var years=document.myform.years.value;
var interst= document.myform.interst.value;
if (amount==null || amount==""){
alert("Amount can't be blank");
return false;
}else if (years==null || years==""){
alert("Years can't be blank");
return false;
}else if (interest==null || interest==""){
alert("Interest can't be blank");
return false;
}
}
</script>
</head>
<body>
<div class="card">
<h3>Term Deposit Interest Calculator</h3><br>
<form name = "myform" method="post"onsubmit="return validateform()">
<input type="text" name="amount" placeholder="Deposit Amount"><span id="num1"></span>
<input type="text" name="years" placeholder="Number Of Years"><span id="num2"></span>
<input type="text" name="interest" placeholder="Yearly Interst Rate"><span id="num3"></span>
<input type="submit" name="submit" class="my submit" value="Total Amount">
</form>
<div class="result">
</div>
</div>
</body>
</html>
<?php
if (!isset($amount7032)) { $amount7032 = ''; }
if (!isset($interest7032)) { $interest7032 = ''; }
if (!isset($years7032)) { $years7032 = ''; }
?>
。请注意,您需要使用__strReplace() function安装Custom JMeter Functions捆绑包才能获得它。