Ошибки при отправке данных в теле с помощью Finagle/Finch в Scala

Я использую Finagle/Finch, и я получаю эту ошибку:

diverging implicit expansion for type argonaut.DecodeJson[A] starting 
  with method MapDecodeJson in trait DecodeJsons
diverging implicit expansion for type argonaut.DecodeJson[V] starting 
  with method MapDecodeJson in trait DecodeJsons
not enough arguments for method body: (implicit d: 
 io.finch.Decode.Aux[A,CT], implicit ct: 
 scala.reflect.ClassTag[A])io.finch.Endpoint[A]. Unspecified value 
 parameters d, ct.

Для этого кода:

def sendPost(db: CommDb): Endpoint[String] =
  post("posts" :: body.as[String]) { s: String =>
    Ok("success")
  }

Я понятия не имею, как решить эту проблему.

1 ответ

Решение

body API изменился в Finch 0.11. Просто поменяй body позвонить body[CT, Foo] (где CT является типом контента), и вы должны получить это скомпилировано. Одна вещь: String тело является своего рода особым случаем, поэтому вы можете использовать stringBody (без параметров типа), так как body смещен к декодированию полезной нагрузки с данным JSON/XML/ любым другим декодером.

scala> import io.finch._, io.finch.circe._

scala> s(Input.post("/").withBody[Application.Json](Map("foo" -> "bar"))).awaitValueUnsafe()
res2: Option[String] = Some({"foo":"bar"})
Другие вопросы по тегам