我正在尝试使用akka-http并尝试编译以下示例:
val route: Route =
path("data" / IntNumber) { id =>
get {
complete {
"GET /data/" + id
}
}
}
我发现我不知道要包含什么以便编译。此外,总的来说,我发现自己很多次在“呃,我需要导入什么才能使用它?”或“这是因为某些导入而无法正常工作? “,特别是与Scala和Akka合作。我使用IntelliJ IDEA但是,除了出色的IDE支持外,它无法多次自动导入所需的内容(例如在Akka中使用ask模式时)。我不怪IDE;据我所知,有时输入正确的东西可能很复杂或不可能。那么,虽然我的问题可能听起来很愚蠢,但是人们在那里做什么来处理这些东西而与IDE的使用无关?以及为了使其有效而在上面的代码中添加什么?
谢谢!
答案 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的好示例代码。