簡単なルートを作成しました:
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
解析にはライブラリを使用します。