Spring Boot:为RestControllers配置url前缀

时间:2015-04-03 20:39:00

标签: java spring spring-mvc servlets spring-boot

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

在我的Spring Boot应用程序中,我试图找出如何为所有RestControllers配置唯一的url前缀。

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

e.g。 /web/index/web/error;以及:/api/v1/something/api/v1/something-else

拥有一个不错的软件包约定将帮助您避免迷失这么多控制器

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

答案 1 :(得分:1)

我不知道它是否有帮助,我刚刚发布了一个我正在另一个线程中测试的解决方案:

How to configure a default @RestController URI prefix for all controllers?