- Akka Http 版本:"com.typesafe.akka"%% "akka-http"% "10.0.11"
- 流版本:"com.typesafe.akka"%% "akka-stream"% "2.5.7"
- 播放 Json 版本:"com.typesafe.play"%% "play-json"% "2.6.7"
我在 crudService 中有以下方法:
def getAll: Future[Seq[A]]
我想以 Json 的形式向世界提供结果的路线返回它。我目前有这个:
val crudService = new CrudService[Todo]()
val route =
pathPrefix("todo" / "_all") {
get {
complete {
crudService.getAll
}
}
}
val bindingFuture = Http().bindAndHandle(route, hostname, port)
我也试过这个(首先完成 Future):
val route =
pathPrefix("todo" / "_all") {
get {
onSuccess(crudService.getAll) { x =>
complete x
}
}
}
它一直在说:不适用于 ToResponseMarshallable。我找不到导致正确解决方案的文档,我也不完全理解这里的问题。有人可以帮忙吗?
最佳答案
您需要添加非内置的 play json 支持以提供(取消)编码支持。
尝试导入https://github.com/hseeberger/akka-http-json库并将您的类(class)与 PlayJsonSupport 混合。您可以查看示例应用程序 here .
def route(implicit mat: Materializer) = {
import Directives._
import PlayJsonSupport._
pathSingleSlash {
post {
entity(as[Foo]) { foo =>
complete {
foo
}
}
}
}
}
Http().bindAndHandle(route, "127.0.0.1", 8000)
关于Scala Akka Http - 使用路由将 Future [A] 作为 Json 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758912/