在 HandlerInterceptorAdapter 中从我的控制器获取路径模板
Getting the path template from my controller in a HandlerInterceptorAdapter
目前我正在从 Jersey 迁移到 Spring MVC,并且需要提供相同的行为和功能。
在旧情况下,我们有一个注册 Prometheus 指标的 Jersey ContainerRequestFilter。指标包含资源方法的路径模板。
例如:
我的资源方法:
@GET
@Path("/some/path/{id}")
public void myEndpointMethod() {
...
}
因此,在 ContainerRequestFilter 中,我们使用 containerRequest.getUriInfo().getMatchedTemplates();
检索了路径模板 "/some/path/{id}"
在新的情况下,我创建了一个 HandlerInterceptorAdapter
,但我无法找到一种方法来检索与我的其余控制器中定义的相同的路径模板。
我的问题是:如何在 HandlerInterceptorAdapter
中检索路径模板?
明确地说,我不想获取 requestUri("/some/path/aa-bb-234"
),而是获取匹配的端点模式 ("/some/path/{id}"
)。
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
String path = (String)request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
System.out.println(path);
super.postHandle(request, response, handler, modelAndView);
}
目前我正在从 Jersey 迁移到 Spring MVC,并且需要提供相同的行为和功能。
在旧情况下,我们有一个注册 Prometheus 指标的 Jersey ContainerRequestFilter。指标包含资源方法的路径模板。 例如: 我的资源方法:
@GET
@Path("/some/path/{id}")
public void myEndpointMethod() {
...
}
因此,在 ContainerRequestFilter 中,我们使用 containerRequest.getUriInfo().getMatchedTemplates();
"/some/path/{id}"
在新的情况下,我创建了一个 HandlerInterceptorAdapter
,但我无法找到一种方法来检索与我的其余控制器中定义的相同的路径模板。
我的问题是:如何在 HandlerInterceptorAdapter
中检索路径模板?
明确地说,我不想获取 requestUri("/some/path/aa-bb-234"
),而是获取匹配的端点模式 ("/some/path/{id}"
)。
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
String path = (String)request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
System.out.println(path);
super.postHandle(request, response, handler, modelAndView);
}