3

我在玩 akka-http 并尝试编译以下示例:

val route: Route =
    path("data" / IntNumber) { id =>
      get {
        complete {
          "GET /data/" + id
        }
      }
    }

我发现我不知道要包含什么才能使其编译。此外,总的来说,我发现自己很多时候都处于“呃,我需要导入什么才能让它工作?”的情况。“由于某些进口,这不起作用?” 在专门与 Scala 和 Akka 合作时。我使用 IntelliJ IDEA,但除了出色的 IDE 支持之外,它无法多次自动导入所需的东西(例如,在 Akka 中使用 ask 模式时)。我不怪 IDE。我知道有时导入正确的东西可能很复杂或不可能。所以,虽然我的问题可能听起来很傻,但是人们会做什么来独立于使用什么 IDE 来处理这些东西?以及在上面的代码中添加什么以使其工作?

谢谢!

4

2 回答 2

1

我认为以下代码应该显示您需要的结构(需要隐式ExecutionContext)以及为您提供路由 DSL 的导入:

import akka.http.server._
import scala.concurrent.ExecutionContext

class MyDataService(implicit ec:ExecutionContext) {
  import Directives._

  val route: Route =
    path("data" / IntNumber) { id =>
      get {
        complete {
          "GET /data/" + id
        }
      }
    }  
}

只要你有一个隐式ExecutionContext范围并且你可以从 akka.http.server.Directives 伴侣中访问隐式,你应该能够使用路由和指令功能。这是做到这一点的一种方法,但是您可以,例如,混合Directives特征并获得相同的结果。

于 2015-01-20T13:34:30.077 回答
1

一般来说,要在 Scala 中为隐式找到正确的导入,您确实需要有良好的文档。有时编译器错误消息可能会给你一些关于你需要什么导入的提示,有时不是。

特别是对于 akka-http,不幸的是,此时文档还没有完成,这使得它有点难以使用。

我查找了您提供的代码片段的导入并想出了:

import akka.http.server.Route
import akka.http.server.Directives._

导入是由 IDE 找到的Route,但我只能通过在 GitHub 上搜索 akka-http 的源代码来找到路由指令的导入,寻找有关开发人员打算如何使用该库的线索。所需的导入应该在文档中突出显示,但还没有。我还没有为 akka-http 中的路由 DSL 找到好的示例代码。

于 2015-01-20T14:15:17.903 回答