繁体   English   中英

Akka-http-写入响应输出流

[英]Akka-http - write to response output stream

我需要创建一个大的选项卡分隔文件作为对HTTP GET请求的响应。 在我的路线中,创建一些Scala对象,然后将这些对象的一些自定义表示形式写入输出流。

这不仅仅是序列化到制表符分隔的格式,而不仅仅是JSON,因为我还需要创建带有列名的标头,所以恕我直言,这不能通过自定义封送处理解决。

那么如何从HttpRequest获取编写器或输出流?

就像是

 ~path("export") {
        get {
              val sampleExonRPKMs = exonRPKMService.getRPKMs(samples)
              val writer = HttpResponse().getWriter // this does not exists
              writeHeader(writer)
              ... // write objects tab separated
        }
   }

您可以使用可编组的源代码完成Akka HTTP路由。 如果您不想使用自定义编组器,则始终可以使用Source[ByteString, _] 有关更多信息,请参阅文档

您的路线看起来像

get {
  val sampleExonRPKMs = exonRPKMService.getRPKMs(samples)
  val headers: String = ???
  Source.single(headers).concat(Source(sampleExonRPKMs).map(_.toTSVLine)).intersperse("\n").map(ByteString.apply)
}

请注意,这是一个单独的问题:如果您要处理大量数据,则getRPKMs调用将导致将所有数据加载到内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM