【问题标题】:Getting the path template from my controller in a HandlerInterceptorAdapter在 HandlerInterceptorAdapter 中从我的控制器获取路径模板
【发布时间】:2020-02-27 15:58:01
【问题描述】:

目前我正在从 Jersey 迁移到 Spring MVC,需要提供相同的行为和功能。

在旧情况下,我们有一个 Jersey ContainerRequestFilter 来注册 Prometheus 指标。度量包含资源方法的路径模板。 例如: 我的资源方法:

@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}")。

【问题讨论】:

    标签: java spring-boot spring-mvc jersey


    【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 2014-08-27
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2011-03-16
      • 2011-03-10
      相关资源
      最近更新 更多