Java 如何在Spring中为所有控制器URL预先添加一些文本
我们已经在SpringBoot中开发了一些RESTAPI 现在我们想在所有的Java 如何在Spring中为所有控制器URL预先添加一些文本,java,spring,spring-boot,url,request-mapping,Java,Spring,Spring Boot,Url,Request Mapping,我们已经在SpringBoot中开发了一些RESTAPI 现在我们想在所有的@RequestMapping中预先添加一些文本(API的版本,例如/v1/) 除了为每个@RequestMapping 示例:当前请求映射/employess和/cars/1/driver 需要像这样构建/v1/员工和/v1/汽车/1/驾驶员您至少可以通过两种方式来实现 选项1:扩展AbstractAnnotationConfigDispatcherServletInitializer,如下所示: public cl
@RequestMapping
中预先添加一些文本(API的版本,例如/v1/
)
除了为每个@RequestMapping
示例:当前请求映射
/employess
和/cars/1/driver
需要像这样构建
/v1/员工
和/v1/汽车/1/驾驶员
您至少可以通过两种方式来实现
选项1:扩展AbstractAnnotationConfigDispatcherServletInitializer,如下所示:
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[] { "/v1/*" };
}
}
选项2:在要预先设置版本的控制器上添加类级别的请求映射,如下所示
@RestController
@RequestMapping("/v1")
public class Controller {
}
我选择选项1。您可以在
应用程序中使用此类属性。属性文件:
server.servlet.contextPath=/v1
或者,您可以拥有一个基本控制器类,并使用所有控制器类对其进行扩展
@RestController
@RequestMapping(value = "${rest.api.version}")
public class MyAbstractController {
}
并将rest.api.version
存储在application.properties
文件中。如果您想用“/v1”附加每个请求,您可以通过在类级别使用@RequestMapping注释来实现,这样所有传入调用(其中包含“/v1”)都将进入控制器
@RestController
@RequestMapping("/v1")
public class YourController {
}
您可以添加一个如何设置当前映射的示例吗?@Arnaud更新了question@MehrajMalik你们有机会测试我的解决方案吗?我要求所有的控制器,而不仅仅是一个控制器!找到解决方案:此问题可能重复: