Я создал простые маршруты:
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
}
и jsons implicits
для ввода и вывода:
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]
}
Но когда я запустил эту программу через Почтальон, я получил ошибку:
The request body was invalid.
с 422
кодом ошибки. Я думаю, что-то не так с кодировщиком и декодером json, потому что мой запрос был очень простым и понятным:
{
"stake": 434,
"name": "Something"
}
Я пытался добавить неявный декодер в маршруты:
implicit val betDecoder: EntityDecoder[F, Bet] = jsonOf[F, Bet]
но это тоже не помогло. Может ли кто-нибудь помочь мне с этим и рассказать, как создать хороший кодер и декодер для jsons? Я использую библиотеку circe
для разбора.