spring-mvc - Spring : Get Registered URL Pattern in Controller from HttpRequest

标签 spring-mvc spring-boot

有没有办法从传入的 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):

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

关于spring-mvc - Spring : Get Registered URL Pattern in Controller from HttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50801485/

相关文章:

java - 子项目中的 WebApplicationInitializer

java - 从 Spring 异常处理程序中读取 httprequest 内容

java - 我的 Controller 在运行时工作,但 mockkmvc 测试失败,因为依赖项甚至不在类中

java - 如何使用 Springfox 从 Swagger 文档中隐藏端点

Java使用单独的任务异步同步两个集合中的项目

java - 当用户在 spring-security 中注销时从 session 中删除用户登录凭据

java.lang.ClassCastException : com. sun.proxy.$Proxy0 无法转换为 org.andrea.myexample.myDeclarativeTransactionSpring.StudentJDBCTemplate

java - Mysql AbandonedConnectionCleanupThread 错误

java - spring mvc Controller 中的代码设计

java - 如何在 Spring MVC 中使用带有属性名称的 Spring @RequestMapping 注解