My Spring Boot应用程序遇到如下问题:
我有两个@RequestMapping
:
@RequestMapping(value = "/{categorySlug:^[a-z0-9-]+$}/{slug:^[a-z0-9-]+$}")
public ModelAndView aTutorial(
@PathVariable(value = "categorySlug", required = false) String categorySlug,
@PathVariable(value = "slug") String slug) {
// (1)
}
和
@RequestMapping(value = "/questions/**")
public ModelAndView fix404() {
// (2)
}
我用(2)将404页面重定向到主页。
但是当我转到网址时如https://w3stacks.com/questions/fix
,我希望它(2),但它请求在(1)中处理,/questions/fix
与{categorySlug)/{slug}
重合。
那么如何(2),或换句话说,可以自定义@RequestMapping
之间的优先级?
感谢。
答案 0 :(得分:0)
您可以忽略questions
categorySlug
API的aTutorial
字词。
喜欢的东西;
@RequestMapping(value = "/{categorySlug:^(?!questions)[a-z0-9-]+$}/{slug:^[a-z0-9-]+$}")
有了这个,你就不会在questions
API aTutorial
中获得以/questions/etc
开头的任何电话,但也会忽略/questionsCategory/etc
因此,fix404
端点将根据您的需要正确使用。