我正在使用spring boot来编写api,我想将所有资源映射到公共基本路径(在这种情况下为/ api)。但是,我不想注释每个RestController类来执行此操作(例如,通过使用@RequestMapping进行注释)。 我已经考虑过以下解决方案,但它们都有一个我不想要的缺点:
所以有人知道如何做到这一点,没有我总结的解决方案的缺点。该项目将仅暴露基于REST的后端,不会为任何静态内容提供服务(不知道这是否会影响可能的解决方案)。 Restcontrollers也分为多个包。
感谢。
答案 0 :(得分:4)
为什么不在所有RestControllers上放置@RequestMapping(" / api")?
@RestController
@RequestMapping("/api")
public class UserApi {
@RequestMapping("/user")
public String user() {
...
}
}
答案 1 :(得分:2)
您可以尝试创建包含@RestController
和@RequestMapping
的自定义注释:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RestConntroller
@RequestMapping(value = "/api" )
@interface MyController {
}
答案 2 :(得分:0)
请参阅我对类似问题的回答。 How to configure a default @RestController URI prefix for all controllers? 您可以创建自定义注释,并仅基于它执行映射。
答案 3 :(得分:0)
您可以尝试使用@path注释将多个URI视为单个URI。
@Path("sampleresource/{Filepath:.*}")
public interface SampleResource {
@GET
@Produces({ MediaType.TEXT_PLAIN })
@Path("/hello")
public Response sayHello();
}