Как вы подключаете свои бизнес-сервисы к маршрутам zio-http (ZIO 2.x)?

Мне не удается подключить zio-http к моим внутренним службам, определенным как ZLayers. Примеры, которые я нашел, просто показывают, как выставлять конечные точки HTTP, такие как:

      import zio._
import zhttp.http._
import zhttp.service.Server

object HelloWorld extends App {
  val app = Http.collect[Request] {
    case Method.GET -> !! / "text" => Response.text("Hello World!")
  }

  override def run(args: List[String]): URIO[zio.ZEnv, ExitCode] =
    Server.start(8090, app).exitCode
}

Теперь предположим, что у меня есть следующая служба ZIO с соответствующим ZLayer в сопутствующем объекте:

        case class GetDepartmentUseCaseImpl(getDepartmentByCodeDrivenPort: GetDepartmentByCodeDrivenPort) extends GetDepartmentUseCase {
    override def execute(param: String): ZIO[Any, Throwable, Option[Department]] = {
      for {
        dep: Option[Department] <- getDepartmentByCodeDrivenPort.get(param)
      } yield dep
    }
  }
  object GetDepartmentUseCaseImpl {
    val layer = ZLayer.fromFunction(GetDepartmentUseCaseImpl.apply _)
  }

Как вы раскрываете конечную точку /departments/{id}который вызывает предыдущую службу и возвращает 200 + json для некоторого (отдела) и 404 для ничего?

Используемые версии:

      val zioVersion = "2.0.0-RC5"
val zioHttpVersion = "2.0.0-RC7"

0 ответов

Другие вопросы по тегам