如何在Spring中在所有控制器URL前面添加一些文本

时间:2019-01-21 08:44:06

标签: java spring spring-boot url request-mapping

我们在SpringBoot中已经开发了一些REST API。

现在,我们想在所有/v1/的前面添加一些文本(例如@RequestMapping的API版本)。

除了将/v1/附加到每个@RequestMapping

之外,是否有其他方法可以做到?

示例:当前请求映射/employess/cars/1/driver

需要像这样/v1/employess/v1/cars/1/driver

3 个答案:

答案 0 :(得分:0)

您至少可以通过2种方式来实现。

选项1:如下扩展AbstractAnnotationConfigDispatcherServletInitializer:

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


    @Override
    protected String[] getServletMappings() {
        return new String[] { "/v1/*" };
    }

}

选项2:在您希望版本如下的控制器上,在类级别上添加请求映射

@RestController
@RequestMapping("/v1")
public class Controller {
}

我会选择选项1。

答案 1 :(得分:0)

您可以在classpath 'com.android.tools.build:gradle:3.2.1' 文件中使用此类属性:

application.properties

或者您可以拥有基本的控制器类,并将其扩展为所有控制器类

server.servlet.contextPath=/v1

并将@RestController @RequestMapping(value = "${rest.api.version}") public class MyAbstractController { } 存储在您的rest.api.version文件中。

答案 2 :(得分:0)

如果要为每个请求附加“ / v1”,则可以通过在类级别使用@RequestMapping注释来完成,这样,所有传入呼叫(其中包含“ / v1”)都将落入您的控制器

@RestController
@RequestMapping("/v1")
public class YourController {
}