Spring Boot:@RequestMapping优先级

时间:2017-04-06 13:32:54

标签: spring-boot request-mapping

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之间的优先级?

感谢。

1 个答案:

答案 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端点将根据您的需要正确使用。