2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kotlin + Spring Boot でHello! World!

Last updated at Posted at 2019-07-04

プロジェクト作成

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

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?