Kotlin + Spring Boot でHello! World!


プロジェクト作成

Spring Initializrでプロジェクトを作成

https://start.spring.io/

以下の図のように選択します。

・Gradle

・Kotlin

・Spring Boot 2.1.6

・Spring Web Starter

スクリーンショット 2019-07-04 13.59.16.png

最後に、「Generate The Project」を押下するとZipファイルがダウンロード開始します。

解凍すると、上記の指定にしたがって作成されたプロジェクトフォルダが現れます。

解凍したフォルダごと、IntellJ IDEAへドロップすると

スクリーンショット 2019-07-04 14.07.26(2).png

IDEが開き、プロジェクト読み込みが開始されます。

Import Gradle projiectと表示されたらクリックします。

スクリーンショット 2019-07-04 14.12.40.png

ポップアップが開くのでOKを押します。

Use auto-import を選択しといた方がいいです。

スクリーンショット 2019-07-04 15.39.17.png

プロジェクト読み込みが完了します。

スクリーンショット 2019-07-04 14.16.49.png


テスト実行

SwaggerDemoApplication.ktを開き、▶︎ボタンを押して表示される「Run」を選択します。

スクリーンショット 2019-07-04 14.27.27.png

この状態で特に何も変化はおきませんが、8080ポートでWebサーバーが起動しています。

http://localhost:8080/

アクセスするとエラーページが表示されてます。

image.png

ログにはアクセスした形跡が表示されてます。

image.png


REST APIの追加


Controllerの作成

com.example.swagger.demoの下にHelloController.ktを作成します。

スクリーンショット 2019-07-04 14.37.08.png

スクリーンショット 2019-07-04 14.40.57.png

以下のようにimportと@GetMappingアノテーションを追加します。

単に文字列を返すだけのgetメソッドです。


HelloController.kt

package com.example.swagger.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class HelloController {
@GetMapping("/hello")
fun hello(): String {
return "Hello! World!"
}
}


再度実行して以下のアドレスにアクセスします。

http://localhost:8080/hello

Hello! World! が返ってきました。

image.png


RequestParamの追加

このままでは寂しいのでコントローラーにパラメータを渡せるようにしてみます。

RequestMappingとRequestParamを追加します。

import org.springframework.web.bind.annotation.RequestMapping

import org.springframework.web.bind.annotation.RequestParam

HelloControllerに@RequestMappingアノテーションを追加し以下のようにします。

package com.example.swagger.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam

@RestController
@RequestMapping
class HelloController {
@GetMapping("/hello")
fun hello(@RequestParam(value = "name", required = false, defaultValue = "world") name: String): String {
return "Hello, $name!"
}
}

再度実行して以下のアドレスにアクセスします。

http://localhost:8080/hello?name=taro

リクエストパラメータ ”name" にtaro が渡されて、Hello! taro! と表示されました。

image.png

パラメータを省略可(required = false,)にしているので、

http://localhost:8080

にアクセスした際にはデフォルト値のWorld(defaultValue = "World")が使用されて、Hello! World!と表示されます。

image.png


参考

Kotlin×Springで作るAPI&ドキュメント - Qiita