如何在客户端呼叫上使用akka-http-circe



我正在尝试使用akka-http,circe和akka-http-json(特别是akkka-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]'。我应该如何揭露获取的unmarshaller?

scala 2.12.4,akka-http 10.0.10,akka-http-circe 1.18.0

工作代码似乎是:

val fut: Future[Json] = Http().singleRequest(HttpRequest(uri = uri)).flatMap(Unmarshal(_).to[Json])

明确给出了目标类型时,编译器会找到必要的Unmarshallers,这起作用。它与自定义类型代替Json同样工作。

进一步的问题:这是这样做的最佳方法吗?

最新更新