问题标签 [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 回答
470 浏览

scala - 使用 scalatest 对 http4s 进行单元测试

o/

我正在尝试在 Scala 中为 cex.io 的 API 实现一个客户端。因为我喜欢函数式编程(或者我认为我喜欢),所以我尝试通过使用 http4s 库来做到这一点。这是一些实验代码:

现在我想测试所说的客户:

不幸的是,直接在 IntelliJ 中运行测试总是会给我:

调试到测试表明错误发生在实例化 api 类 ( val api = new CexApi) 时。

该项目是用 Gradle 构建的,因为我想在我正在做的事情的同时使用 Spring Boot。运行 gradle 测试任务时,它声明它根本没有收到任何测试事件。

我正在使用 Scala 2.13、ScalaTest 2.13:3.1.0 http4s 0.20.15、Gradle 6.0.1,并且我已经在 J​​DK 1.8 和 11 之间来回切换。我已经在这个问题上上下阅读了互联网,现在我没有想法了。任何建议都非常感谢!

0 投票
1 回答
406 浏览

json - Scala,Circe,Http4s - 有什么方法可以在 Circe 中编码 Throwable?

我创建了错误层次结构:

现在我的http4s路线中可能会出现这种错误:

但我得到编译错误:

could not find implicit value for parameter encoder: io.circe.Encoder[Throwable]

Throwable是否可以使用circeand进行编码http4s?我试着这样做:

但这并没有解决问题。

0 投票
1 回答
536 浏览

scala - 如何使用 http4s 处理基本的表单提交?

我不敢相信这不在http4s 文档中,而且我能够在线挖掘的示例代码(在浏览了足够长的时间以发现UrlForm该类之后)对我不起作用。

相关的代码如下所示:

提交关联表单时,IllegalStateException会抛出 。ps.values是一个空地图 ( Map())。

我可以看到(使用printlnContent-Typeis application/x-www-form-urlencoded,正如预期的那样,我可以从浏览器的 Network 选项卡中看到请求“参数”(编码的表单值)正在正确发送。

0 投票
0 回答
129 浏览

scala - 使用 http4s 获取请求中的 403 禁止错误

我在 http4s 中做一个简短的任务,很长一段时间以来我都收到了 403 错误,这很难调试。我的代码是:

0 投票
1 回答
1195 浏览

scala - 如何优雅地关闭 http4s

我正在使用 http4s BlazeServer 0.21,如何优雅关机?我想在硬关机时间内拒绝所有即将到来的请求,并保持处理未完成的请求和响应。

我尝试使用启动服务器serveWhile并设置一个 shutdownHook SignallingRef。服务器流和中间件按预期延迟(因此我们的指标和日志中间件仍然记录此响应)

但是http服务器没有像我预期的那样工作,好像http4s的内部ServerChannel有它自己的shutdownHook并且已经取消了所有的响应。

任何建议/解决方法?或者也许只是一种保持和不杀死请求x几秒钟的方法,也值得赞赏。

0 投票
0 回答
398 浏览

scala - 单元测试 http4s 路由器 websocket 端点

这个想法是能够在路由器服务上对 websocket 端点进行单元测试。使用 a 测试任何其他类型的端点都相当容易Request,但我想不出一种轻松测试 websocket 响应的方法,因为使用 a 访问端点Request会给你一个 501 错误,因为你没有任何相应的套接字握手。

这是我正在使用的路由器

这个想法是让类似于下面的代码与 websockets 一起工作

我已经尝试过这样的变体,例如添加标题

虽然任何Request都会返回 501。

我不确定从这里去哪里,所以如果有人有任何建议,我会很高兴听到。我认为这与创建 websocket 客户端有关,但我不知道在 http4s 中这样做的方法。

0 投票
1 回答
382 浏览

http - 使用 http4s 从 http 更改为 https

有没有办法使用库 http4s 将 http 服务器更改为 https?( https://http4s.org/ )

0 投票
1 回答
517 浏览

scala - FS2:如何从 fs2.Stream 获取 java.io.InputStream?

假设我有val fs2Stream: Stream[IO, Byte]并且我需要,例如,调用一些需要java.io.InputStream.

我想我对 FS2 太陌生了,但我似乎找不到答案。我试过使用fs2.io.toInputStreamfs2.io.readInputStream但我不知道如何提供一些必需的参数。我已经在全能的谷歌上搜索了答案,但自从大多数人最后一次寻找答案以来,API 似乎已经发生了变化。

我该如何做以下事情?

0 投票
1 回答
48 浏览

java - 为什么会显示 Jetty?

我已经使用https://http4s.org/构建了我的网络应用程序:

正如您在上面的代码中看到的,它使用JettyBuilder.

当我启动应用程序时,日志显示:

这是否意味着,Web 应用程序已经在 J​​etty 上运行,我不必从https://www.eclipse.org/jetty/下载码头服务器?

通常,war 文件必须放入 webapps 文件中:

在此处输入图像描述

0 投票
0 回答
236 浏览

scala - 如何使用 keycloak 保护 http4s webapp?

我想用 Keycloak 保护我的基于 Http4s 的 webapp,这在https://www.keycloak.org/docs/latest/securing_apps/index.html#_jetty9_adapter中有描述。

如代码片段所示,http4s webapp 在 Jetty 上运行

而且我不必从https://www.eclipse.org/jetty/下载码头容器。

有没有办法使用 Keycloak 码头适配器保护基于 Http4s 的 webapp?