Spring 启动 : how to set a common path for multiple RestControllers

标签 spring rest spring-boot

我正在使用 spring boot 编写一个 api,我想将我的所有资源映射到一个公共(public)基本路径(在本例中为/api)后面。但是,我不想注释每个 RestController 类来执行此操作(例如,通过使用 @RequestMapping 对其进行注释)。
我已经考虑过以下解决方案,但它们都有一个我不想要的缺点:

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

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

    谢谢。

    最佳答案

    您可以尝试使用 @path 注释将多个 URI 视为单个 URI。

    @Path("sampleresource/{Filepath:.*}")
    public interface SampleResource {
        @GET
        @Produces({ MediaType.TEXT_PLAIN })
        @Path("/hello")
        public Response sayHello();
    }
    

    关于 Spring 启动 : how to set a common path for multiple RestControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711986/

    相关文章:

    java - 将 Spring Boot 属性数组绑定(bind)到对象

    java - Spring 和 CastorMarshaller : add namespace to XML root

    node.js - REST API 服务器困境

    java - 如何从我的 Android 设备访问本地 REST API?

    Java:REST 服务中的异常和返回值处理消耗

    unit-testing - @WithUserDetails 似乎不起作用

    java - 异常 : No property delete found for type void in Spring Data JPA

    java - 无法检索预绑定(bind)的 Hibernate session - 无法获取当前线程的事务同步 session

    java - 无法启动 Spring-Boot 示例

    mysql - 交易测试不会在完成后回滚