1

簡単なルートを作成しました:

class MyRoutes[F[_] : Async](service: MyService[F]) extends Http4sDsl[F] {

  def routes: HttpRoutes[F] = HttpRoutes.of[F] {
    case req@PUT -> Root / "bets" =>
      for {
        bet <- req.as[Bet]
        created <- service.put(bet)
        response <- Created(created)
      } yield response
}

implicitsおよび入力と出力用の jsons :

object jsons {
  implicit def circeDecoder[A[_] : Sync, B: Decoder]: EntityDecoder[A, B] = jsonOf[A, B]
  implicit def circeEncoder[A[_] : Sync, B: Encoder]: EntityEncoder[A, B] = jsonEncoderOf[A, B]
}

しかし、Postman 経由でこのプログラムを実行すると、エラーが発生 The request body was invalid.422ました。エラー コードが含まれています。私のリクエストは非常に単純で明確だったので、jsonエンコーダーとデコーダーに何か問題があると思います:

{       
    "stake": 434,
    "name": "Something"
}

暗黙のデコーダーをルートに追加しようとしました:

 implicit val betDecoder: EntityDecoder[F, Bet] = jsonOf[F, Bet]

しかし、それも役に立ちませんでした。誰かがそれを手伝ってくれて、jsons用の優れたエンコーダーとデコーダーを作成する方法を教えてもらえますか? circe解析にはライブラリを使用します。

4

1 に答える 1