Spring:从 HttpRequest 获取控制器中注册的 URL 模式



有没有办法从传入的HTTP请求中获取注册的URL模式(在控制器中(。

例如,如果我的控制器代码是

@RestController
@RequestMapping("greeting")
public class Greeting {
@GetMapping("/{text}")
public String echo(@PathVariable("text") String text) {
return text;
}
}

传入请求 http://localhost:8080/greeting/Hello, 我想获取映射值/问候/{文本}。我可以使用任何拦截器或处理程序实现相同的目标吗?

我已经注册了所有原始映射URL,如/greeting/{text},/users/find/{id}等,并且如果传入的请求属于任何这些已注册的请求,我想执行一些验证。我本可以使用一个自定义方法级别注释来实现相同的效果,但我现在不想更改所有代码。如果我可以从单个拦截器或扩展任何弹簧处理程序实现相同的效果,那就太好了。

上面的代码片段是一个示例。我有 4 到 5 个具有不同 API 的 spring 应用程序,并希望创建一个可以实现相同目的的通用安全包。

您可以从以下位置访问此内容

final String pattern = request.getAttribute(org.springframework.web.servlet.HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE):

来源: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/HandlerMapping.html#BEST_MATCHING_PATTERN_ATTRIBUTE

HttpServletRequest request request.getCurrentUrl(( 可以获取网址

最新更新