问题标签 [http4s]

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 回答
262 浏览

scala - http4s 客户端返回部分有效载荷

我正在使用AsyncHttpClienthttp4s-0.19.0-M2 进行客户端调用:

有时远程端超时,我在日志中看到以下内容:

但是,它看起来doSomethingWithResponse()仍然被调用,但带有部分resp字符串。有没有办法改变这种行为,以便在http.expectOr无法检索整个有效负载时调用失败?

0 投票
1 回答
4588 浏览

scala - 在 http4s 版本 19.0.0 中找不到 ContextShift[cats.effect.IO] 的隐式值

我有一个使用ciris进行配置管理的 http4s 项目。

该项目在 github中

当我编译我的项目时,我在这里得到以下错误

原因是我在这里缺少函数所需的隐式参数 错误告诉我使用use cats.effect.IOApp or build one with cats.effect.IO.contextShift但找不到cats.effect.IOAppcats.effect.IO.contextShift

任何帮助表示赞赏。

0 投票
1 回答
204 浏览

scala - 使用流建模多个函数调用(以安全的 FP 方式)

给定一个要被多次调用的函数A => IO[B](又名Kleisli[IO, A, B]),并且有副作用,比如更新数据库,如何将这样的多次调用委托给一个流(我猜Pipe[IO, A, B])(fs2,monix observable/iterant)?这样做的原因是能够在一个时间窗口内累积状态、批量调用等。

更具体地说,http4s 服务器需要一个Request => IO[Response],所以我正在研究如何对流进行操作(为了上述好处),但最终为 http4s 提供了这样的功能。

我怀疑它在幕后需要一些相关 ID,我对此很好,我对如何从 FP 的角度安全和正确地进行操作更感兴趣。

最终,我期望的签名可能是这样的:

Pipe[IO, A, B] => (A => IO[B]), 这样对 Kleisli 的调用就会通过管道传输。

作为事后的想法,是否有可能背压?

0 投票
1 回答
138 浏览

scala - 值解码不是 org.http4s.AuthedRequest 的成员

我使用http4s的是 Circe 0.18 版,当我使用以下代码value decode is not a member of org.http4s.AuthedRequest将 json 正文转换为 a 时出现错误:case classAuthedService

0 投票
1 回答
250 浏览

json - Scala 猫 - 编码/解码 json 的问题

我创建了一个简单的路线:

implicits以及用于输入和输出的 jsons :

但是当我通过 Postman 运行这个程序时,我得到了一个错误: The request body was invalid.带有422错误代码。我认为json编码器和解码器有问题,因为我的要求非常简单明了:

我试图在路由中添加一个隐式解码器:

但这也无济于事。谁能帮助我并告诉我如何为 jsons 创建好的编码器和解码器?我使用circe库进行解析。

0 投票
2 回答
1402 浏览

scala - Scala、cats、http4s - 无法识别来自 Http4s 的 <+> 符号

我创建了两条Http4s路线:

现在在我的main方法中,我想这样称呼这条路线:

但是当我编译这段代码时,我得到了一个错误:

这对我来说很奇怪,因为<+>当我在路由类上使用 ctrl+space 时我通常可以使用这个符号,而且我有很好的导入:

无法找到如何解决此问题并用于<+>调用路由类。也许是intellij问题?有人能帮我吗?

0 投票
1 回答
49 浏览

apache - 了解 HTTP 服务器和 lclient 如何理解请求的媒体类型

我编写了一个 http4 客户端来将 Json 数据推送到将接受 http 请求或发布的服务器。现在,我的代码适用于某些系统而不适用于其他系统?我不知道问题出在哪里。它是服务器还是客户端。下面是对服务器的 POST 跟踪以及从服务器返回到客户端的响应。有人可以向我解释为什么这会失败吗?服务器是否告诉我它期待 JSON 以外的东西?谢谢你 !!!

我试过使用不同的标题,结果相同。我尝试以多部分表单数据媒体类型发送 CSV,这也失败了,响应相同????请注意响应,ACCEPT=multipart/form-data header THE POST REQUEST

响应

0 投票
1 回答
72 浏览

scala - WebSocket 端点中的“Spawn”并发效果

我有以下代码:

createService是一个创建新服务的函数。创建新服务是一个非常复杂的过程,它涉及触发 CI 管道,等待它们完成,然后以相同的方式触发更多 CI 管道。它接收到的队列将用于向浏览器报告当前正在执行的操作。

我想同时“生成” createService 并让它运行直到完成。但是同时我想立即将 WebSocket 返回给客户端。Aka 我不能在“生成”createService 时阻止。

我被困住了。我只能考虑使用shift,但这意味着 for comprehension 中的下一行将阻止等待createService完成,然后将 websocket 返回给客户端。

我的方法错了吗?我究竟做错了什么?

0 投票
2 回答
1250 浏览

scala - 在 http4s 中发送 JSON 响应的正确方法是什么?

不久前,我从 akka-http 切换到 http4s。我想做正确的基本事情之一——JSON 处理,特别是发送 JSON 响应。

我决定使用带有 ZIO 的 http4s 而不是猫,所以下面是 http 路由的样子:

如您所见,JSON 序列化部分非常冗长:

有没有其他方法可以在响应中发送 JSON?

0 投票
0 回答
212 浏览

scala - 如何为每个资源授权使用 TSec(使用 http4s)

我目前正在设置一个新的 http4s 服务器并查看身份验证/授权机制并找到 TSec。

在浏览了TSec 的文档这个示例代码之后,我想不出一种方法来实现基于每个资源的授权。

比如说,我可以执行以下操作来授权管理员用户(取自上面的示例):

但是如何根据路径授权特定帐户的管理员用户:

这样只有来自特定帐户(即accid)的管理员用户被授权?

我查看了此处记录的几个实例,但它们似乎不符合我的要求。