Значение decode не является членом org.http4s.AuthedRequest.

Я использую http4s версия 0.18, с Circe и я получаю ошибку value decode is not a member of org.http4s.AuthedRequest когда я преобразую тело JSON в case class в пределах AuthedService со следующим кодом:

  // case class definition
  case class UserUpdate(name: String)

  import org.http4s.AuthedService
  import org.http4s.circe._

  val updateUserService: AuthedService[String, F] =
    AuthedService {
      case req @ PATCH -> Root / "mypath" as _ =>
       req.decode[UserUpdate] { userUpdate =>
          ...
        }
    }

1 ответ

Решение

Оказывается, что, как указано в документации, AuthedService работает на AuthedRequest что эквивалентно (User, Request[F])Итак, что нужно сделать, это позвонить decode на request часть AuthedRequest, увидеть:

  // case class definition
  case class UserUpdate(name: String)

  import org.http4s.AuthedService
  import org.http4s.circe._

  val updateUserService: AuthedService[String, F] =
    AuthedService {
      case authReq @ PATCH -> Root / "mypath" as _ =>
       authReq.req.decode[UserUpdate] { userUpdate =>
          ...
        }
    }
Другие вопросы по тегам