しおしお

IntelliJ IDEAのことなんかを書いてます

Spring MVCのHandlerInterceptorでPathVariableの値を参照する

HandlerInterceptorでPathVariableの値を参照する方法のメモ

HandlerInterceptorの実装例

PathVariableの値はrequest attributeに入っているので、そこから取り出せばよい。 名前は、HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTEを指定する。

class SampleInterceptor : HandlerInterceptor {

    override fun preHandle(request: HttpServletRequest, response: HttpServletResponse, handler: Any): Boolean {
        val pathVariables = request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE) as Map<String, String>
        println("pathVariables = ${pathVariables}")

        return true
    }
}

実行結果

こんな感じのハンドラメソッドを作って動作を確認してみる。

@GetMapping("/{id}")
fun get(@PathVariable id: String): String = "id: ${id}"

この場合、100がPathVariableとなる感じ。

GET http://localhost:8080/api/100

標準出力にPathVariableの値が出ているのでちゃんと参照出来ている。

pathVariables = {id=100}