要导入此代码的工作(以及一般情况下)?

时间:2015-01-20 08:17:52

标签: scala intellij-idea import akka akka-http

我正在尝试使用akka-http并尝试编译以下示例:

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

我发现我不知道要包含什么以便编译。此外,总的来说,我发现自己很多次在“呃,我需要导入什么才能使用它?”“这是因为某些导入而无法正常工作? “,特别是与Scala和Akka合作。我使用IntelliJ IDEA但是,除了出色的IDE支持外,它无法多次自动导入所需的内容(例如在Akka中使用ask模式时)。我不怪IDE;据我所知,有时输入正确的东西可能很复杂或不可能。那么,虽然我的问题可能听起来很愚蠢,但是人们在那里做什么来处理这些东西而与IDE的使用无关?以及为了使其有效而在上面的代码中添加什么?

谢谢!

2 个答案:

答案 0 :(得分: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特征,并获得相同的结果。

答案 1 :(得分:1)

通常,要在Scala中找到正确的implicits导入,您需要拥有良好的文档。有时,编译器错误消息可能会为您提供有关您需要的导入的一些提示,有时则不会。

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

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

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

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