修改 JSON 响应以发送回 Gatling/Scala 中的 api
Modify a JSON response to send back to the api in Gatling/Scala
我正在做一些 Gatling,但由于我从不做 scala,所以我有点迷茫。
我想修改来自 Json 路径的 JSON 响应,然后再发回
我的代码是这样的
.exec(
http("Get call")
.get("getEndpoint")
.check(jsonPath("$.value").saveAs("RESPONSE_DATA"))
)
.exec(
http("Post call")
.post("postEndpoint")
.header("content-type", "application/json")
.body(StringBody("${RESPONSE_DATA}"))
.asJson
)
例如,我想从 Get Call 更改为 Json 中接收的用户的名字。我找不到 Gatling 文档的答案
感谢 Lars 的评论,我设法找到了解决方案。太专注于寻找Gatling的具体方法,忘记了编程的基本方法
这里是新代码
.exec(
http("Get call")
.get("getEndpoint")
.check(jsonPath("$.value").saveAs("RESPONSE_DATA"))
)
.exec(session =>
{
// put body response into variable
val response = session("RESPONSE_DATA").as[String];
// generate random string as you convenience
val randomString = Random.alphanumeric.filter(_.isLetter).take(5).mkString;
// use replace method to modify your json (which is right now a string)
newResponse = response.replace(
"""specificKey":""",
"""specificKey":""" + randomString + "",
)
session
}.set("RESPONSE_DATA", newResponse)
// ^ really important to set the new value of session outside of brackets !!
)
.exec(
http("Post call")
.post("postEndpoint")
.header("content-type", "application/json")
.body(StringBody("${RESPONSE_DATA}"))
.asJson
)
不是我做的更清晰的代码,但它有效。
我正在做一些 Gatling,但由于我从不做 scala,所以我有点迷茫。 我想修改来自 Json 路径的 JSON 响应,然后再发回
我的代码是这样的
.exec(
http("Get call")
.get("getEndpoint")
.check(jsonPath("$.value").saveAs("RESPONSE_DATA"))
)
.exec(
http("Post call")
.post("postEndpoint")
.header("content-type", "application/json")
.body(StringBody("${RESPONSE_DATA}"))
.asJson
)
例如,我想从 Get Call 更改为 Json 中接收的用户的名字。我找不到 Gatling 文档的答案
感谢 Lars 的评论,我设法找到了解决方案。太专注于寻找Gatling的具体方法,忘记了编程的基本方法
这里是新代码
.exec(
http("Get call")
.get("getEndpoint")
.check(jsonPath("$.value").saveAs("RESPONSE_DATA"))
)
.exec(session =>
{
// put body response into variable
val response = session("RESPONSE_DATA").as[String];
// generate random string as you convenience
val randomString = Random.alphanumeric.filter(_.isLetter).take(5).mkString;
// use replace method to modify your json (which is right now a string)
newResponse = response.replace(
"""specificKey":""",
"""specificKey":""" + randomString + "",
)
session
}.set("RESPONSE_DATA", newResponse)
// ^ really important to set the new value of session outside of brackets !!
)
.exec(
http("Post call")
.post("postEndpoint")
.header("content-type", "application/json")
.body(StringBody("${RESPONSE_DATA}"))
.asJson
)
不是我做的更清晰的代码,但它有效。