[英]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.