概要
このブログでは、ZIO HTTPを使ったシンプルな"Hello, World!"アプリケーションの作成方法を紹介します。
サンプルコード
以下のコードは、zio-http
を使用してHTTPサーバーを構築し、/hello
エンドポイントに対して"Hello, World!"というレスポンスを返すアプリケーションの例です。
import zio._
import zio.http._
object Main extends ZIOAppDefault {
val routes: Routes[Any, Response] =
Routes(
Method.GET / "hello" ->
handler(Response.text("Hello, World!"))
)
def run: ZIO[Any, Throwable, Nothing] = {
Server.serve(routes).provide(Server.default)
}
}
コードの詳細
ルーティングの定義
val routes: Routes[Any, Response] =
Routes(
Method.GET / "hello" ->
handler(Response.text("Hello, World!"))
)
この部分では、HTTP GETリクエストが/hello
に対して行われたときに、"Hello, World!"というテキストレスポンスを返すようにルーティングを定義しています。
サーバーの起動
def run: ZIO[Any, Throwable, Nothing] = {
Server.serve(routes).provide(Server.default)
}
run
メソッドでは、サーバーを起動するための処理を定義しています。ここで重要なのは、Server.serve(routes)
の部分です。このメソッドは、指定されたルーティングに基づいてサーバーを起動します。
Server.serve
の戻り値
Server.serve
メソッドの戻り値はURIO[Server, Nothing]
です。URIO
は型エイリアスでZIO[Server, Nothing, Nothing]
とも表現できます。この型は、Server
を要求し、失敗しないことを示しています。
provide
による依存関係の注入
Server.serve(routes).provide(Server.default)
provide
メソッドを使用することで、Server
を注入しています。ここでは、Server.default
が注入されます。
Server.default
とは
Server.default
は、デフォルトのサーバー設定を提供するためのものです。この設定には、標準的なポート(通常は8080)やホスト名(通常はlocalhost)が含まれます。開発中はこのデフォルト設定で十分ですが、本番環境ではカスタマイズが必要な場合があります。
まとめ
このブログでは、zio-http
を使用してシンプルなHello, Worldアプリケーションを作成する方法を紹介しました!