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

时间:2017-11-23 21:57:03

标签: scala unmarshalling akka-http circe

我正在尝试使用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

1 个答案:

答案 0 :(得分:2)

工作代码似乎是:

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

当显式给出目标类型时,编译器会找到必要的解组器,这是有效的。它同样适用于自定义类型而不是Json

进一步的问题:这是最好的方法吗?