Home About Contact
Micronaut , Kotlin

URLに含まれるパラメータを取得する micronaut

フォームデータがPOSTされたときのサーバ側でのフォームデータ取得方法 はわかったのだが、GETのときのURLの後ろに追加されるパラメータはどう取得すればいいのか?

Micronaut

version 確認:

$ mn --version
Micronaut Version: 2.5.7

それではプロジェクトを作成して、item コントローラをつくるところまで:

$ mn create-app myapp --build=gradle --lang=kotlin
$ cd myapp
$ mn create-controller item

生成された雛形の src/main/kotlin/myapp/ItemController.kt を修正します。

    @Get(uri="/{path}", produces=["text/html"])
    fun index(path: String, @QueryValue username: String): String {
        return listOf(
            "<html>",
            "<body>",
            path,
            ",",
            username,
            "</body>",
            "</html>").joinToString(System.getProperty("line.separator"))
    }

QueryValue クラスを忘れずにインポートします。

import io.micronaut.http.annotation.QueryValue

これは http://localhost/item/hello?username=taro のようなリクエストを想定しています。

実際にブラウザにこのURLをいれて実行してみましょう

hello, taro

と表示されました。

完成したコード ItemController.kt:

package myapp

import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.HttpStatus

import io.micronaut.http.annotation.QueryValue

@Controller("/item")
class ItemController {
    @Get(uri="/{path}", produces=["text/html"])
    fun index(path: String, @QueryValue username: String): String {
        return listOf(
            "<html>",
            "<body>",
            path,
            ",",
            username,
            "</body>",
            "</html>").joinToString(System.getProperty("line.separator"))
    }
}