2014-07-01 2 views
1

나는 문서와 Restbucks implementation by Oliver을 샅샅이 뒤졌지만 생성 된 Spring REST 저장소 자원에 대한 링크를 구성 할 수없는 것 같습니다. (나는 그들에 추가 할 수는 있지만, ResourceProcessor를 통해 그들을 제거 할 수 없다. 외모에 의해 변환되기 전에 프로세서가 호출되기 때문이다.)스프링 데이터 ReST ref link null 또는 empty 일 때

내 경우는 매우 간단하고 그 점에있는 객체에 rel 링크를 생략하고 싶다. null 또는 빈 콜렉션 (예 : 그래프 노드 부모/자식 구조의 경우)

아무도 내가 이것을 얻을 수있는 방법에 대해 어떤 자극도 느끼지 않습니까? 이상하게도 Restbucks README에 제안 된 항목을 갖고 싶습니다. 그러나 사용자 정의 RestResourceEntityLinks 확장을 가져오고 내 구현이 모든 도메인 객체에 적용될 때 구현에서 생성 된 링크가 생성되는 곳에서는 사용하지 않을 수 있습니다.

그러나 아마도 내가 건너 왔을 때 더 쉬운 방법이 있을까요? 아니면 빈 배열이나 null을 가리키는 이러한 링크를 갖는 것은 유효한 hateoas ref이므로 그냥 그대로두고 계속 진행해야합니다. 사전

답변

2

에서

덕분에 일반적으로 그냥 반환 ListResource.getLinks()과 혼란을 호출하여 링크를 제거 할 수 있어야한다 말하기. Resource.removeLink(String rel)이 맞는 것 같으면 티켓을 만들어보십시오.

그러나 빈 리소스를 가리키는 링크는 링크 존재가 클라이언트와 상호 작용할 수있는 관련 리소스가 있음을 알리는 데 중요한 역할을한다는 점에서 의미가 있습니다. 즉, 링크를 사용할 수없는 경우 클라이언트가 관련 리소스를 할당하거나 현재 비어있는 컬렉션에 요소를 추가 할 가능성을 어떻게 알 수 있습니까?

링크는 리소스의 현재 상태를 나타내지 만 클라이언트가 다음에 수행 할 수있는/수행 할 수있는 능력을 나타냅니다. 예를 들어 RESTBucks 프로젝트에서 payment link을 가져 가십시오. 결제가 아직 이루어지지 않은 경우에만 표시됩니다. 완료되면 링크가 사라집니다. 그것은 실제로 당신이 쏘고있는 것과는 정반대입니다 :).

+0

감사합니다 올리버, 말 입에서 똑바로 그것을 듣고 좋은. 필자가 언급 한 것처럼 목록 참조를 사용하여 링크를 수정할 수 있으므로 removeLink가 필요하지 않다고 생각합니다. 제 생각에는 링크를 제거하는 것이 지불 링크 시나리오와 유사하다고 생각합니다 (루트 부모 노드가 부모 참조를 표시하지 않아야 함). ResourceProcessor에서 제안한 내용을 시도했지만 링크가 아직 생성되지 않은 것 같습니다 (참조 된 엔터티의 경우).이를 제거 할 수 없습니다. 이 프로세스가 컨트롤러 수준에서 수행되도록 권장합니까? 빠른 답장을 보내 주셔서 감사합니다. –

+1

ReSTful API를 사용하는 앱을 만든 후에는 rel의 ID가 있어야하므로 빈 리소스를 가리키는 링크를 제거하는 것이 의미가없는 방법에 관해 무엇을 의미하는지 보게되었습니다 보관 됨 (따라서 null 값의 발견이 유효 함) –