gpt4 book ai didi

Scala Akka Http - 使用路由将 Future [A] 作为 Json 返回

转载 作者:行者123 更新时间:2023-12-02 04:32:04 25 4
gpt4 key购买 nike

  • 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com