gpt4 book ai didi

circe - Http4s EntityDecoder 不是为简单案例类自动派生的

转载 作者:行者123 更新时间:2023-12-01 13:28:57 24 4
gpt4 key购买 nike

我收到此错误:

Cannot decode into a value of type com.blah.rest.model.UserProfile, 
because no EntityDecoder[cats.effect.IO, com.blah.rest.model.UserProfile]
instance could be found.

对于以下案例类:
case class UserProfile(id: Option[Int], firstName: String, lastName: String)

POST 上遇到错误代码:
case req @ POST -> Root / "v1" / "profiles" =>
req.as[UserProfile] flatMap {(up: UserProfile) =>
Ok(service.createProfile(up).asJson)
}

与以下 POST body :
{
"firstName": "Jack",
"lastName": "Appleseed"
}

我认为当 body 被转换为 UserProfile 时会发生这种情况。在 req.as[UserProfile] !

但是,这是一个普通的案例类, EntityDecoder应该是自动派生的!我知道 akka-http可以!

任何想法/建议?

请注意: Http4sVersion = "0.18.0-M4"circe version "0.9.0-M1"

最佳答案

答案是:

req.decodeJson[UserProfile] flatMap {(up: UserProfile) =>
Ok(service.createProfile(up).asJson)
}

你得到它的原因是从 Circe 解码器到 http4s EntityDecoder 的桥梁不是隐含的。如果您只是一个 JSON API,则可以创建一个,但这不是库通常可以做出的假设。

关于circe - Http4s EntityDecoder 不是为简单案例类自动派生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com