我有一个带有一组休息控制器的弹簧启动应用程序(@RestController)。
我在application.properties
文件中使用以下属性来设置基本网址:
server.context-path=api
此属性也会更改我的静态资源的基本URL。我不想让他们改变,我该怎么做?
注1
为什么我想这样做?我想在我的服务器上提供单页应用程序(反应应用程序),并且我希望对/api/**
的大部分请求进行授权。我希望所有其他GET请求都由react路由器处理。这就是为什么我不希望我的静态资源的基本URL发生变化。
答案 0 :(得分:5)
您可以使用
spring.data.rest.base-path=/api
使用在您的应用程序属性中
@BasePathAwareController
在您的控制器类上。
使用时
server.context-path=ctx
上下文路径适用于整个应用程序,包括
@Controller
@RestController
@BasePathAwareContoller
@RepositoryRestController
@RepositoryRestResource
使用时
spring.data.rest.base-path=/api
前缀适用于
@BasePathAwareContoller
@RepositoryRestController
@RepositoryRestResource
你可以同时使用
server.context-path=ctx
spring.data.rest.base-path=/api
应用/ctx/api/
答案 1 :(得分:2)
您可以将路径定义为.properties文件中的属性,并使用@Value注释读取它
例如
在application.properties
中common.basepath = /test
在控制器中使用
@RequestMapping(@Value("${common.basepath}"))
答案 2 :(得分:1)
您不应该使用此属性,因为它会更改整个应用程序的上下文路径。
为什么不在/api/yourResource
注释中指定RequestMapping
,例如:
@RestController
@RequestMapping("/api/oneController")
public class OneController { ... }
.....
@RestController
@RequestMapping("/api/anotherController")
public class AnotherController { ... }
答案 3 :(得分:0)
试试这个:
@RequestMapping(ControllerConstant.BASE_API_URL + "/audit")
哪里:
public class ControllerConstant {
public static final String BASE_API_URL = "/whatever/api/v1";
}
这样,基本 URL 集中在 ControllerConstant.BASE_API_URL
中。
我希望这会有所帮助。