Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在Play框架中使用多个WS-requests在多个片段中检索API响应_Scala_Rest_Playframework - Fatal编程技术网

Scala 在Play框架中使用多个WS-requests在多个片段中检索API响应

Scala 在Play框架中使用多个WS-requests在多个片段中检索API响应,scala,rest,playframework,Scala,Rest,Playframework,我需要从API端点检索一些数据,该端点将返回大小限制为1MB。我需要检索的数据大于1MB,因此我需要将其分为多个块,并在最后将其放在一起。如果我只有两块,我知道我可以做如下事情: val futureResponse: Future[String] = for { chunk1 <- ws.url(api_base + "/read") .withQueryString("offset" -> 0.toString, "length" ->

我需要从API端点检索一些数据,该端点将返回大小限制为1MB。我需要检索的数据大于1MB,因此我需要将其分为多个块,并在最后将其放在一起。如果我只有两块,我知道我可以做如下事情:

    val futureResponse: Future[String] = for {
      chunk1 <- ws.url(api_base + "/read")
        .withQueryString("offset" -> 0.toString, "length" -> 1E6.toString)
        .get()
        .map { response =>
          val raw_data = (Json.parse(response.body) \ "data").as[String]
          val decoded_data = Base64.getDecoder.decode(raw_data)
          new String(decoded_data, StandardCharsets.UTF_8)
        }
      chunk2 <- {
        ws.url(api_base + "/read")
          .withQueryString("offset" -> 1E6.toString, "length" -> 1E6.toString)
          .get()
          .map { response =>
            val raw_data = (Json.parse(response.body) \ "data").as[String]
            val decoded_data = Base64.getDecoder.decode(raw_data)
            chunk1 + new String(decoded_data, StandardCharsets.UTF_8)
          }
      }
    } yield chunk2
val futuresponse:Future[String]=for{
chunk1 0.toString,“长度”->1E6.toString)
.get()
.map{response=>
val raw_data=(Json.parse(response.body)\“data”).as[String]
val decoded_data=Base64.getDecoder.decode(原始_数据)
新字符串(解码的_数据,StandardCharsets.UTF_8)
}
chunk2 1E6.toString,“长度”->1E6.toString)
.get()
.map{response=>
val raw_data=(Json.parse(response.body)\“data”).as[String]
val decoded_data=Base64.getDecoder.decode(原始_数据)
chunk1+新字符串(解码的\u数据,StandardCharsets.UTF\u 8)
}
}
}产量块2

但是数据集之间的数据块数量会有所不同。假设我知道需要读取的块的数量,有没有办法使用某种forEach理解将任意数量的WS请求链接在一起?

当没有更多可用的数据/块时,API端点会返回什么?基于此,您必须重复调用API。是否可以根据需要使用循环多次调用API,并附加结果?例如,将结果读取为字节