我已经通过创建扩展RepositoryRestMvcConfiguration的Java配置类,并将@RestResource添加到存储库,将Spring Data Rest(2.0)添加到现有的Spring MVC应用程序中。
是否可以更改Rest API的基本URL? E.g:
http://localhost:8080/rest/customers
而不是
http://localhost:8080/customers
我尝试使用setBaseURI覆盖configureRepositoryRestConfiguration,但它似乎不适用于响应中的所有链接。
答案 0 :(得分:27)
从Spring Boot 1.2开始,您可以设置此属性:
spring.data.rest.baseUri=api
可替换地:
spring.data.rest.base-uri=api
(Spring Boot使用relaxed binding系统)
注意:我发现如果您使用自定义配置扩展RepositoryRestMvcConfiguration
,则该属性不会生效。有关更多信息,请参阅:
https://github.com/spring-projects/spring-boot/issues/2392
一旦发布了下一版本的Spring Boot(在1.2.1之后),解决方案将是扩展RepositoryRestMvcBootConfiguration
。
答案 1 :(得分:15)
您可以通过以下方式覆盖RepositoryRestMvcConfiguration
来配置它:
@Configuration
@Import(RepositoryRestMvcConfiguration.class)
public class RestDataConfig extends RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
super.configureRepositoryRestConfiguration(config);
try {
config.setBaseUri(new URI("/data"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:15)
我使用了春季启动1.2.3.REALEASE
我尝试了spring.data.rest.baseUri=/api
和spring.data.rest.basePath=/api
,但它无效。
尝试和谷歌搜索后:server.servlet-path=/api
为我工作。
答案 3 :(得分:6)
我通过添加第二个“AbstractAnnotationConfigDispatcherServletInitializer”解决了我的问题:
public class RestWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { RepositoryRestMvcConfiguration.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/rest/*" };
}
@Override
protected Filter[] getServletFilters() {
return null;
}
@Override
protected String getServletName() {
return "rest-exporter";
}
}
答案 4 :(得分:1)
查看官方文档how to change rest base uri
但我不知道为什么我spring.data.rest.basePath=/api
财产无效,我必须写下第二个解决方案:
@Configuration
class CustomRestMvcConfiguration {
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setBasePath("/api");
}
};
}
}
答案 5 :(得分:0)
参见官方文档
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
server.servlet-path=/ # Path of the main dispatcher servlet.
server.context-path=
您可以将其包含在配置文件中。
答案 6 :(得分:0)
添加到application.properties(春季启动版本2.2.0.M2)的以下行
spring.mvc.servlet.path=/rest
希望这会有所帮助