我经历了很多链接,例如How to show all controllers and mappings in a view和How 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的值,
任何指针如何获得它?
我能够使用以下代码解决此问题。 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;
Spring MVC设置属性HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE
,可用于获取用于匹配传入请求的模式:
String matchingPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)
在您的情况下,将返回/employees/employee-names/{employee_name}
。