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".
我不知道是否有帮助,我刚刚在另一个线程中发布了我正在测试的解决方案:
我不是 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)
.
例如/web/index
, /web/error
;以及:/api/v1/something
、/api/v1/something-else
.
拥有良好的封装约定将帮助您避免在这么多 控制器.
中迷失方向注意: 请记住,您不需要在每个方法中重复相同的上下文,只需 "rest of the URL".
我不知道是否有帮助,我刚刚在另一个线程中发布了我正在测试的解决方案: