Vamos hacer un pequeño proyecto con ZIO, como para empezar. El "hola mundo" de toda la vida pero en un servicio REST. 
Antes de empezar vamos a hacer un proyecto con scala 3 con sbt : 
sbt new scala/scala3.g8
Luego agregamos las dependencias de zio, el build.sbt debe quedar así : 
scalaVersion := "3.1.2"
organization := "dev.zio"
name         := "zio-quickstart-restful-webservice"
libraryDependencies ++= Seq(
  "dev.zio"       %% "zio"            % "2.0.0",
  "dev.zio"       %% "zio-json"       % "0.3.0-RC10",
  "io.d11"        %% "zhttp"        % "2.0.0-RC10",
  "io.getquill"   %% "quill-zio"    % "4.2.0",
  "io.getquill"   %% "quill-jdbc-zio" % "4.2.0",
  "com.h2database" % "h2"             % "2.1.214"
)
Aclaro que tengo otras dependencias como la de base de dato que las voy a usar en proximos ejemplos. 
Y ahore si, hacemos el web service para nuestro "hola mundo" : 
package dev.zio.quickstart.greet
import zhttp.http._
object GreetingApp {
  def apply(): Http[Any, Nothing, Request, Response] =
    Http.collect[Request] {
      // GET /greet?name=:name
      case req@(Method.GET -> !! / "greet") if (req.url.queryParams.nonEmpty) =>
        Response.text(s"Hello ${req.url.queryParams("name").mkString(" and ")}!")
      // GET /greet
      case Method.GET -> !! / "greet" =>
        Response.text(s"Hello World!")
      // GET /greet/:name
      case Method.GET -> !! / "greet" / name =>
        Response.text(s"Hello $name!")
    }
}
Luego programamos el Main :
package dev.zio.quickstart
import dev.zio.quickstart.counter.CounterApp
import dev.zio.quickstart.download.DownloadApp
import dev.zio.quickstart.greet.GreetingApp
import dev.zio.quickstart.users.{InmemoryUserRepo, PersistentUserRepo, UserApp}
import zhttp.service.Server
import zio._
object MainApp extends ZIOAppDefault {
  def run =
    Server.start(
      port = 8999,
      http = GreetingApp() 
    ).provide(
      // An layer responsible for storing the state of the `counterApp`
      ZLayer.fromZIO(Ref.make(0)),
      
      // To use the persistence layer, provide the `PersistentUserRepo.layer` layer instead
      InmemoryUserRepo.layer
    )
}
Y listo!! Si vamos a http://localhost:8999/greet?name=Emanuel me va a saludar. 
Para correrlo lo pueden hacer con sbt run o con intellij corriendo el Main. 
Dejo el repo : 
https://github.com/emanuelpeg/zio-quickstart-restful-webservice