我正在尝试使用akka-http,circe和akka-http-json(特别是akka-http-circe)进行简单的REST API调用。
import io.circe.generic.auto._
object Blah extends FailFastCirceSupport {
//...
val fut: Future[Json] = Http().singleRequest(HttpRequest(uri = uri))
我期待akka-http-circe
找出如何将HttpResponse
解组到我想要的类型(此处只是Json
)。但它没有编译。
所以我查看了一些文档和示例,并尝试了这个:
val fut: Future[Json] = Http().singleRequest(HttpRequest(uri = uri)).flatMap(Unmarshal(_).to)
给予:type mismatch; found 'Future[HttpResponse]', required 'Future[Json]'
。我应该如何为fetch公开一个unmarshaller?
Scala 2.12.4,akka-http 10.0.10,akka-http-circe 1.18.0
答案 0 :(得分:2)
工作代码似乎是:
val fut: Future[Json] = Http().singleRequest(HttpRequest(uri = uri)).flatMap(Unmarshal(_).to[Json])
当显式给出目标类型时,编译器会找到必要的解组器,这是有效的。它同样适用于自定义类型而不是Json
。
进一步的问题:这是最好的方法吗?