如何在执行请求时获取在控制器层配置的当前请求映射URL?

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

我经历了很多链接,例如How to show all controllers and mappings in a viewHow to configure a default @RestController URI prefix for all controllers?,依此类推。

我想在过滤器拦截器处获取请求映射URL

例如:此URL是我在REST控制器方法中配置的,我们自然会通过/employees/employee-names/John来获得Employee John。

/employees/employee-names/{employee_name}

现在,当有人按下/employees/employee-names/John时,如果要使用REST控制器/employees/employee-names/{employee_name},我想获取实际映射URL的值,

任何指针如何获得它?

spring-boot spring-rest
2个回答
0
投票

我能够使用以下代码解决此问题。 AntPathMatcher是识别属性文件中配置的传入请求和URL是否完全匹配的理想方法。该解决方案对我来说很有用。

AntPathMatcher springMatcher = new AntPathMatcher();
Optional<String> antMatch = props.getMapping().stream()
     .filter(//Perform Some Filter as per need)
    .map(Mapping::getVersion)
    .findFirst();
return antMatch.isPresent() ? antMatch.get() : null;

0
投票

Spring MVC设置属性HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE,可用于获取用于匹配传入请求的模式:

String matchingPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)

在您的情况下,将返回/employees/employee-names/{employee_name}

© www.soinside.com 2019 - 2024. All rights reserved.