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}