IntelliJ IDEA で Ktor を使ってみた

IntelliJ IDEA で Ktor のアプリケーションを作った時のメモ。

## Ktorとは
JetBrains社(Kotlinを開発している企業)が提供する軽量なwebフレームワーク。
[公式サイト](https://ktor.io)

## Ktor プラグインのインストール

「Configure」 -> 「Plugins」 を選択する。
<img width="781" alt="スクリーンショット 2019-03-23 18.51.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/57b742f5-89d1-30bc-9745-0059670e8920.png">

プラグイン管理画面が表示されるので、検索ボックスに「Ktor」と入力後、Enterキーを押下する。
<img width="740" alt="スクリーンショット 2019-03-23 18.52.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/99ee021b-f136-d3a1-7075-89094485fcda.png">

検索を実行すると、Ktorプラグインが表示されるので、「Install」を押下する。
<img width="740" alt="スクリーンショット 2019-03-23 18.52.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/5fc09c3c-8fa9-c5d7-93b2-7afaa66b9d77.png">

インストール完了後、「Restart IDE」を押下するか、「OK」を押下する。
「OK」押下の場合、IDEの再起動を催促される。
<img width="740" alt="スクリーンショット 2019-03-23 18.52.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/49795cf3-b684-856e-34b5-2aedd5b25075.png">

## アプリケーションの作成

「Create New Project」を押下する。
<img width="669" alt="スクリーンショット 2019-03-23 18.53.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/aa51aee4-799f-0586-2620-d03bf4563df2.png">

プラグイン一覧の「Ktor」を選択後、「Next」を押下する。
<img width="799" alt="スクリーンショット 2019-03-23 18.58.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/28a4a8b1-11fd-f9e7-7646-417db4d39687.png">

特に変更せず、「Next」を押下する。
<img width="799" alt="スクリーンショット 2019-03-23 18.58.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/22874eff-131d-d13f-4805-28176032c099.png">

プロジェクト名を入力後、「Finish」を押下する。
<img width="799" alt="スクリーンショット 2019-03-23 18.59.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/1e684ebf-3916-e0d1-ea61-77072a7e5304.png">

「Create directories for empty content roots automatically」にチェックを入れる。
※ 「Create directories for empty content roots automatically」にチェックを入れておくと、自動で必要なディレクトリ作ってくれる。
<img width="933" alt="スクリーンショット 2019-03-23 19.00.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/8c2f84c5-c79f-15e9-1a78-d5276097dfe0.png">

プロジェクトが作成されるので、「Application.kt」を編集する。
<img width="1440" alt="スクリーンショット 2019-03-23 19.04.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/e75734da-5696-bb17-5735-9900e497dcdb.png">

```Application.kt
package com.example

import io.ktor.application.*
import io.ktor.response.*
import io.ktor.request.*
import io.ktor.routing.get      // GET用
import io.ktor.routing.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("/") {  // ルートパスの定義
            call.respondText("Hello Ktor!!")
        }
    }
}

```

「Application.kt」の編集後、アプリケーションを起動する。
<img width="1437" alt="スクリーンショット 2019-03-23 20.08.46.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/b5660ff5-a9ec-1861-1b2c-2366cfeccbbe.png">

起動に成功すると、デフォルトでは「localhost:8080」で立ち上がる。
<img width="1437" alt="スクリーンショット 2019-03-23 20.11.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/250c60ee-d7be-5aad-c255-9ab238d1bec8.png">

※ ちなみに、ポート番号やデータベースの接続先情報は「application.conf」に定義する。
<img width="1437" alt="スクリーンショット 2019-03-23 20.13.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/1b627d13-e53e-ef74-df0a-75c182970ba3.png">

ブラウザやPostman等で、「localhost:8080」にアクセスする。
<img width="1512" alt="スクリーンショット 2019-03-23 19.10.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/180939/7c77b94d-a1a2-4f73-129e-084db0c0b912.png">