2

我正在尝试使用 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弄清楚如何将 a 解组HttpResponse为我想要的类型(在这里,只是Json)。但它不编译。

所以我查看了一些文档和示例,并尝试了这个:

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

给:type mismatch; found 'Future[HttpResponse]', required 'Future[Json]'。我应该如何为获取公开解组器?

斯卡拉 2.12.4、akka-http 10.0.10、akka-http-circe 1.18.0

4

1 回答 1

2

工作代码似乎是:

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

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

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

于 2017-11-23T21:57:03.463 回答