Ktor入門

はじめに

普段はサーバーサイドKotlinの開発をしています。 そこではSpring Bootを使った開発をしているのですが 別のフレームワークを試してみようと思い、Ktorに入門してみます。

Ktorとは

jp.ktor.work Kotlinで実装されたフレームワークです。 Spring BootはJavaで実装されたものなのでKotlin製のものを使いたい時の選択肢に入ってくるものかなと 思います。

環境設定

公式によれば、以下の方法でセットアップができるとのこと。 * Maven * Gradle * start.ktor.io * InteliJ Plugin

ここではstart.ktor.ioを使って、雛形を作成し、inteliJ IDEAで実装をすすめる流れを想定して 書きます。

start.ktor.io

こちらにアクセスするとプロジェクトの雛形ができる類のものです。 (Springのspring initializr相当のものかな) start.ktor.io

みた感じだとServerとしての機能としてどのテンプレートを使うかとか clientツールとして何を使うかみたいなものを、選びやすくしているところが Spring initizlizrと違うところかなと。 f:id:set21set21:20210701210305p:plain

設定はこのような感じで作成してみます。 f:id:set21set21:20210702212007p:plain

ここでBuildボタンを押すことで必要な雛形をダウンロードできます。 これを適当な場所においてinteliJ IDEAでopenします。 これで開発準備は完了です。

※### 用語について start.ktor.ioページにでてくるFeatureとはライブラリの依存性にあたるものと思われます。 こちらに言及あり。

HTTP API - クイックスタート - Ktor

※この部分 f:id:set21set21:20210702213047p:plain

まずはHello

ここでは単純なAPIを作ってみたいと思います。 こちらを参考にします。 jp.ktor.work

初期状態でsrc配下にApplication.ktができています。 f:id:set21set21:20210702214716p:plain

コード

package com.example

import io.ktor.application.*
import io.ktor.response.*
import io.ktor.routing.*

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
    // ここを実装しました
    routing {
        get("test") {
            call.respondText("OK")
        }
    }
}

実行

mainメソッドがあるのでApplication.ktを実行します。

結果

簡単ではありますがGETするAPIができました。

curl http://localhost:8080/test
OK

まとめ

ソースはこちらに。 github.com

参考

まずは公式のクイックスタート jp.ktor.work