问题标签 [tapir]

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 投票
1 回答
328 浏览

scala - ZIO 1.0.3 改变了环境的工作方式,现在 http4s Blaze 将无法运行

我第一次使用 ZIO,我从https://github.com/guizmaii/scala-tapir-http4s-zio/blob/master/src/main/scala/example/HttpApp.scala的样板存根开始使用 ZIO 版本 1.0.0-RC17 来设置和运行 http4s Blaze 服务器,包括 Tapir。效果很好,但后来我尝试更新到版本 1.0.3,以便我使用最新版本,但该版本与此存根中的代码不兼容。具体来说:

这是定义服务器的代码(一些不相关的路由线从原始中删除):

这是 run() 方法的主体。运行此代码不会导致应用程序以代码 0 退出,因为 Blaze 服务器按预期阻止终止。问题是这个片段:

由于引入了 Has[A],这在 1.0.3 中不起作用。编译器现在抱怨你不能从最终类 Has 继承,所以你不能调用新的时钟。

我试图通过替换它来解决这个问题

并用 ExitCode 对象替换退出代码整数,这使得代码编译,但在此之后 Blaze 服务器似乎没有初始化或阻止应用程序的终止。它刚刚以退出代码 0 结束。

显然这里缺少一些东西,而且我还没有看到任何关于从旧环境系统转移到基于 Has[A] 的新系统的信息。如何修复此样板文件以便 Blaze 服务器再次运行?

0 投票
1 回答
125 浏览

scala - 使用 Akka HTTP 文件上传的 Tapir - 在收到请求结束之前发送 2xx 的“早期”响应

我使用tapir + akka http 作为服务。端点之一下载文件。

刚开始警告

在收到请求结束之前发送 2xx 的“早期”响应

我如何使用貘处理这个问题?

0 投票
1 回答
47 浏览

scala - 从别名类型的类中隐式获取 Schema

我目前正在使用sttp 版本 3.3.14貘版本 0.18.0-M15并且我在某些案例类的架构上遇到了问题。更具体地说,包含类型别名的案例类。

这是一个简单的自定义编解码器:

以下代码可以正常工作:

但是这个测试用例失败了。请注意,唯一的区别是 Either 别名。

关于这里可能有什么问题或如何解决这个问题的任何想法?

谢谢!

0 投票
1 回答
50 浏览

scala - 如何在不修改原始 Enum 的情况下使 Scala Enumeration 实现 Trait?

我是第一次玩 Scala,所以请耐心等待。还使用 tapir 声明 API,我在为枚举提供 Schema 时遇到问题。

我定义了一堆枚举,它们是我的域模型的一部分,并且扩展了 Scala 的Enumeration. 例如,这是其中之一:

并且还有许多使用它们的案例类。例如,Order使用我们之前定义的枚举,例如:

我想让这个枚举实现一个添加隐式但不修改原始Status枚举的特征(我不想将 Status 枚举和所有其他枚举耦合到这个特征)。

特征看起来像:

我想以某种方式修改Order对象,因此Status枚举现在是一个TapirStatus枚举(或类似的东西),它扩展了原始StatusTapirEnumeration,但我认为这是不可行的,因为它Status最初被定义为伴随对象。

理想情况下,我想作为 API 的响应公开的所有枚举都将实现该TapirEnumeration特征,同时仍扩展它们已经扩展的内容。

我能做些什么来实现这一目标?当然,创建一个实现该特征的新枚举并不是 DRY,所以它不是一个选项。

0 投票
1 回答
45 浏览

scala - 哪个是在scala中为tap端点(API层)编写单元测试的最佳库

我在 scala 中创建了 tapir 端点,其中项目的架构是 API 层调用服务层,服务层调用 repo 层。

我已经为服务和 repo 层编写了单元测试(使用 mockito),但现在我找不到一个好的库,可以在 scala 中通过模拟服务层的方法来测试 api 层。基本上通过为端点编写单元测试,我想在 api 层测试验证。

PS 我尝试使用 RestAssured 库,但它似乎有助于编写集成测试,但不适用于单元测试。

编辑:

使用的底层服务器框架是 Akka HTTP