【发布时间】:2021-12-25 12:41:51
【问题描述】:
我正在尝试使用他们的 simples hello world 示例来玩弄 ZIO http。我有一个 Java 编写的服务,它执行一些逻辑,它需要一个处理函数,所以它可以在结果准备好时调用它。如何将它与 ZIO http 一起使用? 我想要这样的东西:
object HelloWorld extends App {
def app(service: JavaService) = Http.collect[Request] {
case Method.GET -> Root / "text" => {
service.doSomeStuffWIthCallback((s:String) => Response.text(s))
}
}
override def run(args: List[String]): URIO[zio.ZEnv, ExitCode] =
Server.start(8090, app(new JavaService)).exitCode
}
基本上我想从回调函数发送 ZIO HTTP 响应,我只是不知道该怎么做。谢谢。
编辑:
我无法从您的代码中获得正确的类型,所以我决定简化整个事情,并得出以下结论:
val content: HttpData[Blocking, Throwable] = HttpData.fromStream {
ZStream.fromEffect(doSomeStuffWrapped)
}
def doSomeStuffWrapped = {
UIO.effectAsync[String] { cb =>
cb(
IO.succeed("TEST STRING")
)
}
}
但是,这里的问题是类型不匹配,HttpData.fromStream需要字节的ZStream
这是我的要点的链接: https://gist.github.com/pmkyl/a37ff8b49e013c4e2e6f8ab5ad83e258
【问题讨论】: