I cannot seem to be able to map my Repository in any location other than the following:
@RepositoryRestResource(collectionResourceRel = "item", path = "item")
public interface ItemRepository extends PagingAndSortingRepository<Item, Long> {
I thought I can use:
path = "/some/other/path/item"
but the mapping does not resolve. I get:
HTTP ERROR 404
Problem accessing /some/other/path/item. Reason:
Not Found
In spring-data javadoc path
is defined as: "The path segment under which this resource is to be exported."
What am I doing wrong?
You need to extend the RepositoryRestMvcConfiguration
and override the configureRepositoryRestConfiguration(RepositoryRestConfiguration config)
to set yours baseUri
. e.g.
@Configuration
public class MyRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration {
private static final String MY_BASE_URI_URI = "/my/base/uri";
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
super.configureRepositoryRestConfiguration(config);
config.setBaseUri(URI.create(MY_BASE_URI_URI));
}
}
To change the base URI, you can also just add this to application.properties:
spring.data.rest.base-path=/my/base/uri
Correct application property is the following:
spring.data.rest.base-path=/my/base/path
(base-path
instead of base-uri
)
In spring boot 2
@Configuration
public class RepositoryConfiguration extends RepositoryRestConfigurerAdapter
{
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config)
{
config.setBasePath("/my/base/uri");
}
}
I think the path attribute is used to specify a path segment (so no slashes). The "/some/other/path" would have to be the servlet path or the context path (i.e. nothing to do with Spring Data).