从我的控制器中的HandlerInterceptorAdapter中获取路径模板

问题描述 投票:0回答:1

当前,我正在从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}")。

java spring-boot spring-mvc jersey
1个回答
1
投票
@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);
    }

0
投票
@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);
    }
© www.soinside.com 2019 - 2024. All rights reserved.