有没有办法从传入的 HTTP 请求中获取注册的 URL 模式(在 Controller 中)。
例如,如果我的 Controller 代码是
@RestController
@RequestMapping("greeting")
public class Greeting {
@GetMapping("/{text}")
public String echo(@PathVariable("text") String text) {
return text;
}
}
传入请求是 http://localhost:8080/greeting/Hello , 我想获取映射值/greeting/{text}。我可以使用任何拦截器或处理程序实现相同的目的吗?
我已经注册了所有原始映射 URL,例如 /greeting/{text}、/users/find/{id} 等,并且想要执行一些验证如果传入的请求属于任何已注册的请求。我可以使用一个自定义方法级别注释来实现相同的目的,但我现在不想更改所有代码。如果我可以通过单个拦截器或扩展任何 Spring 处理程序来实现相同的效果,那就太好了。
上面的代码片段是一个示例。我有 4 到 5 个具有不同 api 的 Spring 应用程序,并且想要创建一个可以实现相同目的的通用安全包。
最佳答案
您可以从
访问此内容final String pattern = request.getAttribute(org.springframework.web.servlet.HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE):
关于spring-mvc - Spring : Get Registered URL Pattern in Controller from HttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50801485/