如何解决在 Http4S
浏览我看到的文档:
多个HttpRoutes可以与combineK方法(或其别名)结合使用
tweetService <+> helloWorldService
不知道结果如何?即使用CombineK 与Kleisli 合并?
https://typelevel.org/cats/typeclasses/semigroupk.html
我很难想象它的作用。
有人可以帮助理解这一点吗?
附注: 我看到我可以只使用路由器(它结合了下面的东西)而不用担心,但希望能有指针来了解正在发生的事情。
更新 1
只需在 Cats 中仔细检查 SemigroupK 中的 Klseisli
ealed private[data] trait KleisliSemigroupK[F[_],A] extends SemigroupK[Kleisli[F,A,*]] {
implicit def F: SemigroupK[F]
override def combineK[B](x: Kleisli[F,B],y: Kleisli[F,B]): Kleisli[F,B] =
Kleisli(a => F.combineK(x.run(a),y.run(a)))
override def combineKEval[B](x: Kleisli[F,y: Eval[Kleisli[F,B]]): Eval[Kleisli[F,B]] =
Eval.now(Kleisli(a => F.combineKEval(x.run(a),y.map(_.run(a))).value))
}
知道我们的路由返回 OptionT[F,Response[F]] 或 F[Option[Response[F]]],我仍然很难弄清楚目的是什么。
更新 2
检查 Cats IO 后
protected class IOSemigroupK extends SemigroupK[IO] {
final override def combineK[A](a: IO[A],b: IO[A]): IO[A] =
a.handleErrorWith(_ => b)
}
我怀疑这意味着,尝试每条路线,直到成功。
并且路由器将确保:
服务可以按任意顺序挂载,因为请求将首先与最长的基本路径匹配。
到目前为止感觉差不多。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。