我有AkkaHttp
个客户端和cats
个库。我想避免引发异常,所以我写了这段代码:
class AkkaHttpJokeClient(url: String)(implicit system: ActorSystem) extends JokeClient[IO] {
override def getJoke(): IO[Either[Throwable, Joke]] = {
implicit val materializer: ActorMaterializer = ActorMaterializer()
implicit val ec: ExecutionContext = system.dispatcher
IO.fromFuture(IO {
Http()
.singleRequest(HttpRequest(uri = url))
.flatMap(Unmarshal(_).to[String])
.map(x => Try{x.parseJson.convertTo[Joke]}.toEither)
})
}
}
它可以工作,但是我有一些问题。第一个是连接问题没有解决。第二个:我认为可以做得容易些,不是吗?我找不到合适的方法来做得更好。