Я использую Spring Data REST и у меня проблемы с доступом к моим ресурсам.Я могу получить доступ к ресурсу вообще, например, когда я звоню
curl -i -X GET http://localhost:18080/myapp/api/picklists/662070
Я получаю что-то вроде:
{
"id" : "662070",
...
"_links" : {
"self" : {
"href" : "http://localhost:18080/myapp/api/picklists/662070"
},
"picklist" : {
"href" : "http://localhost:18080/myapp/api/picklists/662070"
},
"currentStatus" : {
"href" : "http://localhost:18080/myapp/api/picklists/662070/currentStatus"
},
"picklistPositions" : {
"href" : "http://localhost:18080/myapp/api/picklists/662070/picklistPositions"
}
}
}
Если я понимаюПравильно, теперь я выполняю запросы GET к элементам в разделе ссылок для доступа к связанному подресурсу.Но когда я хочу перейти по ссылке на связанный объект, например:
curl -i -X GET http://localhost:18080/myapp/api/picklists/662070/picklistPositions
, я всегда получаю HTTP/1.1 404 Not Found
в качестве ответа и следующий вывод журнала:
2018-10-19 20:04:44,280 | WARN [http-nio-18080-exec-13] [org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.AbstractHandlerExceptionResolver.resolveException(136)] Resolved [org.springframework.data.rest.webmvc.ResourceNotFoundException: Resource not found!]
Я не понимаю, что я делаю не так.Каждый подресурс имеет собственный публичный репозиторий, и я использую стратегию обнаружения репозитория по умолчанию.
Доступ к подресурсам через curl -i -X GET http://localhost:18080/myapp/api/picklistPositions
также возможен.
Я использую Spring Data REST, но без Spring Boot.Моя конфигурация выглядит так:
@Configuration
class CustomRestMvcConfiguration {
private String REST_BASE_PATH = "/api";
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setBasePath(REST_BASE_PATH);
}
};
}
@Bean
public BasePathAwareLinkBuilder basePathAwareLinkBuilder(ServletContext servletContext) {
URI basePath = URI.create(REST_BASE_PATH.startsWith("/") ? REST_BASE_PATH : "/".concat(REST_BASE_PATH));
return new BasePathAwareLinkBuilder(servletContext, basePath);
}
}
Есть предложения?