Spring Boot:为RestControllers配置url前缀

the*_*150 7 java spring servlets spring-mvc spring-boot

我不是Spring的专家,而且它是黑盒子,即使使用Spring的文档,我也很难自己解决问题.有时,我只是不知道我在寻找什么才能开始我的搜索......

在我的Spring Boot应用程序中,我试图弄清楚如何为我的所有RestControllers配置一个唯一的url前缀.

我真正想要的就是从根上下文"/"中提供我的静态内容,但是可以从不同的上下文访问我的RestController端点,比如说"/ api/*".

我知道如何通过application.properties更改应用程序的默认上下文,但这不是我所追求的.当谈到servlet,映射等时,我在这里表现出我的无知,因为我说我正试图为两种不同类型的内容获得两种不同的上下文.

x80*_*486 7

我认为这是一个有效的观点,尽管将它分成两个(或更多的应用程序)是很常见的.假设您要处理(1)提供HTML/CSS/JS的网站和(2)REST API.在你的控制器上你可以通过使用来定义"上下文" @RequestMapping(你不能有两个,所以那些将在不同的控制器中,取决于你想要实现的目标):

  • @RequestMapping(/web)
  • @RequestMapping(/api/v1)

...然后在这些控制器中,在方法中,您可以再次使用分配"URL的其余部分" @RequestMapping(value = "/index", method = RequestMethod.GET).

例如/web/index,/web/error; 以及:/api/v1/something,/api/v1/something-else.

有一个很好的包约定将帮助您不要迷失这么多控制器.

注意:请记住,您不需要在每个方法中重复相同的上下文,而只需要"其余的URL".