Spring 引导:为 RestControllers 配置一个 url 前缀

Spring Boot: Configure a url prefix for RestControllers

我不是 Spring 专家,作为黑匣子,我很难自己解决问题,即使有 Spring 的文档。有时,我只是不知道我要寻找什么才能开始搜索...

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

我真正想要的是从根上下文“/”提供我的静态内容,但让我的 RestController 端点可以从不同的上下文访问,比如“/api/* ”。

我知道如何通过 application.properties 更改应用程序的默认上下文,但这并不是我想要的。当涉及到 servlet、映射等时,我在这里显示了我的无知,正如我所说的,我正在尝试为两种不同类型的内容获取两种不同的上下文。

我认为这是一个有道理的观点,尽管将它分成两个(或多个)应用程序是很常见的。假设您要处理 (1) 服务 HTML/CSS/JS 的网站和 (2) REST API。在你的控制器之上,你通过使用 @RequestMapping 来定义 "the context"(你不能有两个,所以它们将位于不同的控制器中,同样,这取决于你想要实现的目标):

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

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

分配 "rest of the URL"

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

拥有良好的封装约定将帮助您避免在这么多 控制器.

中迷失方向

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

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