我正在使用Spring Boot编写一个api,我想将所有资源映射到一个公共(public)基本路径(在这种情况下为/api)。但是我不想对每个RestController类进行注释(例如,通过@RequestMapping对其进行注释)。
我曾考虑过以下解决方案,但它们都具有不利的一面,我不希望这样做:

  • 创建一个基类(例如ApiRestController),并让所有其他RestController继承此基类。这样做的缺点是,在类级别上的@Requestmapping不会在基类和实现类之间合并。
  • 注释所有RestController,但这会导致代码重复
  • 更改server.context-path属性。这具有所有端点都将使用此基本路径的缺点。即使是执行器暴露的端点也可以投影。
  • 使用自定义的DispatcherServlet和ServletRegistrationBean。但这似乎与更改server.context-path具有相同的效果。

  • 有谁知道如何做到这一点而又没有我总结的解决方案所具有的缺点。该项目将仅公开基于REST的后端,并且不会提供任何静态内容(不知道这是否会影响可能的解决方案)。 Restcontrollers也分为多个软件包。

    谢谢。

    最佳答案

    为什么不将@RequestMapping(“/api”)放在所有RestController上?

    @RestController
    @RequestMapping("/api")
    public class UserApi {
        @RequestMapping("/user")
        public String user() {
            ...
        }
    }
    

    10-07 18:22