scala - Play Framework : how to display a Future[List[String]]?

标签 scala http playframework future

我在探索 Play Framework 时遇到了一些困难。

在使用 WS 库对 Google Analytics 进行 API 调用后,我收到一个 Future[Response] 对象。在消化了 Response 对象之后,我得到了我真正关心的数据,但是因为它被包装在 Future 中,所以我在将它写入浏览器时遇到了一些麻烦。

OK( gaApiString )

这给我一个错误:

Cannot write an instance of scala.concurrent.Future[String] to HTTP response. Try to define a Writeable[scala.concurrent.Future[String]]

我在查找和理解如何使用 Writable 对象时遇到了一些麻烦。帮助不大?

最佳答案

您需要将 FuturemapFuture[Result],并将其传递给 Action.async .

def test = Action.async { 

    val wsResult: Future[String] = ...

    wsResult.map { gaApiString => 
        Ok(gaApiString)
    }

}

如果 gaApiString 实际上是 List[String],那么这取决于您要用它做什么。将其显示为逗号分隔列表,您只需将其更改为 Ok(gaApiString.mkString(","))。这里的关键是映射 Future 以在完成后操作该值。

关于scala - Play Framework : how to display a Future[List[String]]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814035/

相关文章:

postgresql - 无法连接到 PostgreSQL 中的数据库

Scala:哈希忽略初始大小(数十亿条目的快速哈希表)

java - 我应该避免多部分/表单请求吗?

http - 对于已知不存在的资源,最合适的 HTTP 响应代码是什么?

playframework - PlayFramework〜运行奇怪的错误

Scala 编译器无法推断模式匹配的混合类型

scala - 为什么 Scala 在解包 Tuple 时要构造一个新的 Tuple?

http - 处理未找到对象错误的最用户友好的方式?

java - 如何在 Play Framework 的 head 和 body 部分添加 HTML 内容?

scala - 不满意链接错误 : How to load native library of opencv when running play application?