ПОЛУЧИТЕ подресурс Spring Data REST API возвращает 404 Not Found - PullRequest
0 голосов
/ 19 октября 2018

Я использую 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);
    }
}

Есть предложения?

1 Ответ

0 голосов
/ 23 октября 2018

Кажется, моя проблема связана с Извлечение и обновление загруженных ленивыми полей многие-многие в Spring Data REST .Мои отношения загружаются лениво, поэтому они не выбираются при доступе к ним как к подресурсам.

...