当前,我正在从Jersey迁移到Spring MVC,并且需要提供相同的行为和功能。
在旧的情况下,我们有一个Jersey PromiseRequestFilter注册了Prometheus指标。指标包含资源方法的路径模板。例如:我的资源方法:
@GET
@Path("/some/path/{id}")
public void myEndpointMethod() {
...
}
因此,在ContainerRequestFilter中,我们使用"/some/path/{id}"
检索了路径模板containerRequest.getUriInfo().getMatchedTemplates();
在新情况下,我创建了一个HandlerInterceptorAdapter
,但找不到与我的rest控制器中定义的路径模板相同的方法。
我的问题是:如何在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);
}
@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);
}