在Spring MVC Rest服务上,我在尝试匹配超出我配置的RequestMapping值的任何内容时遇到问题。
所以例如我有这个:
@RequestMapping(value = "{configKey}/{arguments:.*}", method = RequestMethod.GET)
表示匹配第二个路径变量之外的任何内容。问题是这样的可以正常工作:
get("/test/document")
而最终显示为404:
get("/test/document/download")
Spring无法处理此正则表达式很奇怪。实际上,我尝试了很多解决方案,但没有一个起作用。
以前,我在JAX-RS上具有以下配置:
@Path("/{configKey}/{arguments:.*}")
一切都很好,但是现在我正在迁移并遇到这个问题。
有谁知道发生了什么事以及如何解决这个问题?
编辑:
添加
{configKey}/**
-不起作用添加
{configKey}/{arguments}/**
可以,但是例如如果我打电话给:get("/test/document/download")
我只将test
作为配置键,将document
作为参数。在参数中,我希望获得{configKey}
之外的所有内容。哪个可以是例如它在任何情况下都应该起作用:get("/test/document")
get("/test/document/download")
get("/test/document/download/1")
get("/test/document/download/1/2")
get("/test/whatever/xxx/1/2/etc")
哪个正在使用JAX-RS的配置:
@Path("/{configKey}/{arguments:.*}")
最佳答案
以下映射适合您
@RequestMapping(value = "{configKey}/**", method = RequestMethod.GET)
此映射称为default mapping pattern。