最初のアプリケーションの作成

Estimated reading time: 1 minute

このチュートリアルではHTTPリクエストに対しHello, World!と返す単純なKtorのサーバアプリケーションの作り方について学びます。 KtorアプリケーションはMavenGradleといった一般的なビルドシステムで構築することができます。

目次:

正しい依存性を設定

Ktorはいくつかのアーティファクトに分かれています。 そのため必要な機能だけを利用することができます。 それにより全コードを含んだfat-jarのサイズを減らし、起動時間を短縮できます。

以下のケースでは、ktor-server-nettyのアーティファクトのみ利用します。 利用可能なアーティファクト一覧はアーティファクトページをご覧ください。

リリースバージョンのそれらアーティファクトは、jcenter、maven centralリポジトリにあります。 プレリリースのものはBintray kotlin/ktorにあります。

ビルドファイルについてのより詳細なガイドは以下をご参照ください:

セルフホスティングアプリケーションの作成

KtorはTomcatのようなServlet互換アプリケーションサーバ、Jetty, Netty, CIOのような組み込みアプリケーションサーバ上で起動できます。

このチュートリアルでは、Nettyを使ったセルフホスティングアプリケーションの作成を行います。

embeddedServer関数を呼び出すことで起動することができます。 engineのfactoryメソッドを第一引数に渡し、ポート番号を第二引数に渡し、実際のアプリケーションコードを第四引数に渡します。 (第三引数はhostであり、デフォルト値は0.0.0.0になっています)

以下のコードはGET/のURLを受け付けHello, world!の文字列を返す、1つのルーティングのみを定義しています。

ルーティングの定義後、server.startメソッドを呼び出すことでサーバの起動が可能です。 その際にboolean引数を渡すことでアプリケーションのmainスレッドをブロックするかどうかを指定します。

Main.kt
import io.ktor.application.*
import io.ktor.http.*
import io.ktor.response.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*

fun main(args: Array<String>) {
    val server = embeddedServer(Netty, 8080) {
        routing {
            get("/") {
                call.respondText("Hello, world!", ContentType.Text.Html)
            }
        }
    }
    server.start(wait = true)
}

 

サーバが起動後、HTTPリクエストを受け付けるのみでそれ以外のことを行わないのであれば、wait = true引数でserver.startを呼び出すのがいいでしょう。

アプリケーションの起動

アプリケーションのエントリーポイントはKotlinの標準的なmain関数になっているため、単純にそれを起動することでサーバの起動および指定のポートのリッスンがスタートします。

localhost:8080ページをあなたのブラウザで確認すれば、Hello, world!というテキストが確認できるでしょう。

次のステップ

以下はセルフホスティングKtorアプリケーションの構築と起動に関する単純な例です。 サーバーとしてのKtorについて学ぶために以下が推奨されます: