2017-11-24 12 views
0

spring-data-rest 2.6.8을 spring-boot 1.5.8과 함께 사용하고 있습니다. 그럼에도 불구하고 우리는 이상한 행동을 발견했습니다.Spring-data-rest "유효한 Hateoas URI를 엔티티로 변환하지 못했습니다"

/rest/students/search/findByTeacher?teacher=/rest/teachers/1으로 GET 할 때 모든 것이 원활하게 실행됩니다. SDR은 교사 URI를 교사 엔터티로 변환하고 학생 목록을 얻습니다. /rest/students/search/findByTeacher?teacher=/rest/class/2/teacher

이 현재 우리는 두 단계로이 일을하고 있습니다 :

우리는 다른 URI (즉 동일한 개체로 확인) 시스템을 변환 할 수 없습니다 제공

. 먼저 /rest/class/2/teacher을 얻은 다음 _links.self.href (/ rest/teachers/1)을 사용하여 Google 검색을 수행합니다.

이 2 단계 프로세스를 피하기 위해 SDR을 구성하는 방법이 있습니까?

답변

1

나는 그것이 가능하지 않다고 생각한다. Spring Data Rest는 링크를 해결할 때 기본적으로 url을 잡고 처음부터 baseUri를 제거한 다음 URL의 다음 부분을 저장소 {teachers}와 일치 시키려고 시도한 다음 findOne 메소드를 사용하여 저장소를 쿼리합니다. 이 경우 URL /rest/teachers/1은 단순히 자원의 식별자입니다 (교사 ID = 1과 같이 state가 아님).

/rest/class/2/teacher을 쿼리하는 문제는 해결 될 내용을 알지 못하는 것입니다. 요소 일 수 있으며, 목록 일 수도 있고, null 일 수도 있습니다. 이는 이것이 자원에 대한 식별자가 아니기 때문에 다른 요소에 대한 링크 일 수 있습니다.

+0

어쩌면 불가능할 수도 있습니다. 그러나 SDR이 링크가 언급하는 대상을 쉽게 파생시킬 수 있기 때문에 멋진 개선이 될 수 있습니다. 실제로 cannonical._links.self.href를 얻으려면 GET 요청을 한 번 더하고 있습니다. 어쨌든 고맙습니다. 감사합니다. –