我不是Spring专家,但作为黑匣子,即使凭Spring的文档,也很难凭我自己来解决问题。有时候,我只是不知道要寻找什么才能开始搜索…
在我的Spring Boot应用程序中,我试图弄清楚如何为我所有的RestControllers配置唯一的url前缀。
我真正要做的只是从根上下文“ /”提供我的静态内容,但让我的RestController端点从另一个上下文(例如“ / api / *”)访问。
我知道如何通过application.properties更改应用程序的默认上下文,但这不是我想要的。我在这里表示对servlet,映射等的无知,就像我说的那样,我试图为两种不同类型的内容获取两种不同的上下文。
我认为这是有道理的,尽管将其分为两个(或多个)应用程序是很常见的。假设您要处理(1)提供HTML / CSS / JS的网站和(2)REST API。在控制器的顶部,您@RequestMapping可以通过使用定义“上下文” (不能有两个,因此根据您要实现的目标,它们又将位于不同的控制器中):
@RequestMapping
@RequestMapping(/web)
@RequestMapping(/api/v1)
…然后在这些控制器中的方法中,再次使用分配“ URL的其余部分” @RequestMapping(value = "/index", method = RequestMethod.GET)。
@RequestMapping(value = "/index", method = RequestMethod.GET)
例如/web/index,/web/error; 以及:/api/v1/something,/api/v1/something-else。
/web/index
/web/error
/api/v1/something
/api/v1/something-else
拥有良好的封装约定将帮助您避免迷失于如此众多的 控制器 。
注意: 请记住,您不需要在每个方法中都重复相同的上下文,而只需“ URL的其余部分”。