问题标签 [http4s-circe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
199 浏览

postgresql - Doobie 的 PostgreSQL 错误:PSQLException:列索引超出范围:3,列数:2

我正在练习 Scala、Doobie 和 PostgreSQL。该数据库位于 Docker 容器中。我可以发布和更新职位,但无法获取所有职位。我不断收到以下错误。

我研究了其他类似的问题,但我的不同之处在于我只是想从数据库中获取所有内容,所以我不理解这个专栏问题。

我开始认为我需要一个 circe 编码器来从数据库中读取 Json ???下面的circe解码器在leftMap和show上抛出错误

0 投票
1 回答
457 浏览

scala - Http4s 客户端以递归方式将实体编码为 x-www-form-urlencoded

我有如下要求

我正在查看源代码,它看起来像withEntity继承了嵌套的标题,EntityDecoder所以上面的代码默认为Content-Type: application/json. 好像我明确地传递了UrlForm一切都很好。

不幸的是,我遇到的 API 期望数据为x-www-form-urlencoded,并且考虑到目标 API 的复杂性以及所有不同的端点/请求,我想找到一种将给定案例类编码为表单的方法。最好的方法是什么?

我努力了:

  1. 显式指定Content-Type但这不起作用,因为继承的类型优先

  2. Product构建从to的隐式泛型转换UrlForm(目前的扩展方法)

这里的问题是UrlForm在映射的两边都需要一个字符串。如果我只是用.toString它转换东西,因为嵌套类型例如:

导致以下json无效

我试过asJson而不是,toString但circe无法决定正确的KeyEncoder

解决这个问题的正确方法是什么,以便将给定Product的内容编码到流中?

0 投票
1 回答
285 浏览

scala - Http4s解码器如何自定义无效字段的错误消息

我有以下代码:

我的堆栈是 http4s + zio。

我为这个案例类添加了自定义解码器,其中有一行:

发布无效的 json 和无效的电子邮件返回给我:

HTTP/1.1 422 无法处理的实体内容类型:文本/纯文本;charset=UTF-8 日期:2021 年 1 月 19 日星期二 16:46:27 GMT 内容长度:29

请求正文无效。

响应代码:422(无法处理的实体);时间:681ms;内容长度:29字节

我想定制。在 http4s 代码中,我看到 InvalidMessageBodyFailure。但我在文档中找不到如何自定义此响应的任何信息。

有人可能已经试过了吗?

谢谢

编辑:

示例用户创建请求:

json请求:

这可以使用这样的代码来实现:

但我想知道它是否可以通过一些已经完成但没有记录的http4s核心功能来简化:)

0 投票
1 回答
53 浏览

scala - Http4s circe 无法解码孩子

我有错误模型,例如:

在我的路线中,我基于此模型生成 http 错误类型,即:

但问题是我需要添加这个 asInstanceOf,否则 circe 看不到编码器。我的编码器看起来像:

有没有办法避免在那里做 asInstanceOf ?

0 投票
1 回答
123 浏览

json - 如何使用 Circe 解码包含 json 的数组

我有我的 circe 解码器,如下所示。我相信我的情绪解码器可以正常工作,所以不会在下面包含它。

我的 Json 看起来像这样

我只是想要valuevalue_classification。可以看出,这些值位于一个数组中。

我怀疑 Circe 正在寻找解码 aList[data]但我不想创建case class DataInfo(list: List[Data])它只是感觉不对。