加特林。从下一个请求的响应中获取数据

Gatling. Fetch data from response for next requests

我需要从 JSON 响应中获取可选数据以构建下一个请求。我使用 check(jsonPath("...rooms[0].id").exists.saveAs("...roomId")) 但如果用户没有房间,结果将被 .check() 解释为错误(例如 request count 4 (OK=3 KO=1)

object Users {
  val execute = exec(http("Users"))
    .get("/api/user?userIdentifier=${userId}")
    // if user has no rooms, the check results in an error (KO) 
    .check(jsonPath("$..user.rooms[0].id").exists.saveAs("roomId"))
    .pause(1)
}

object Room {
  val execute = exec(http("Room"))
    .get("/api/room?id=${roomId}")
    .pause(1)
}

val readOnlyScenario = scenario("Read only scenario") {
  .feed(userIdsdata)
  .exec(Users.execute,
    doIf(session => session.contains("roomId")) {
      Room.execute
    }
  )
}

如何从 JSON 响应中获取可选数据并将其保存在会话(如果存在)中,而当数据不存在时 .check() 不会失败?

exists 必须替换为 optional

.check(jsonPath("$..user.rooms[0].id").optional.saveAs("roomId"))