2013-01-08 1 views
0

리소스/메시지가 있습니다. 내 자바 코드에서값 비싼 속성이있는 RESTful 리소스

는 메시지 인터페이스는 다음과 같습니다

interface Message { 
    public int getID(); 
    public int getPostingUserID(); 
    public String getText(); 
    public int getRelevance(); 
} 

예를 들어,/메시지/7 줄 것이다 다음

{ id: 7, postingUserID: 102, text: "tabs are better!", relevance: 10.3 } 

불행하게도, getRelevance()는 매우 비싸다 즉석에서 계산할 수 있으며 쿼리의 10 분의 1 정도만 필요합니다. 내가 그것을 필요로하지 않을 때 나는 그것을 계산하고 싶지 않다.

그래서, 나는 몇 가지 옵션을 볼 수

  • /메시지/7 includeRelevance =
  • /메시지를 관련성을 계산하기 위해 그것을 말할 그렇지 않으면 응답에 포함하지 않는 참 /? 별도의 요청으로 7/관련성 및 별도의 요청으로 다음
  • /relevances? forMessageID = 7을 계산 한 다음

가장 편안하고는 옵션입니다 그것을 계산?

감사합니다.

+0

그들은 모두 나에게 안성맞춤 인 것처럼 보인다. 아마 너는 이것을 과소 평가할 것인가? –

답변

3

내가이 상황에서 /messages/7/relevance 갈 경향이, 나는 이 문서가 /messages/7를 가져 오는 것은 관련 관련 리소스에 URL을 포함 할 때 반환해야합니다을 만들 것 (물론 HATEOAS 검색 기능에 대한).

+0

가장 깨끗하고, 가장 발견 가능하며, 무엇보다 가장 이해할 수있다. – cmbuckley

+0

끝내 주셔서 고마워요! 그래서/messages/7에 대해 이와 같은 것을 반환하겠습니까? {id : 7, postingUserID : 102, 텍스트 : "탭이 더 좋습니다!", 관련성 : "/ messages/7/relevance"} – Verdagon

+1

@ Verdagon 그런 종류의 소리는 괜찮습니다. 저는 개인적으로 XML 문서를 JSON에 반환하는 것을 선호합니다. 그런 식으로 더 깊은 유형의 메타 데이터를 삽입하거나 링크 할 수는 있지만 그것은 분명히 개인적인 선택입니다. –

0

이 작업을 수행하는 가장 쉬운 방법은 (틀림없이 틀릴 수도 있음) 2 가지 미디어 유형을 정의하는 것입니다.

클라이언트는 Accept: 헤더를 사용하여 특정 요청을 요청할 수 있으며 기본값은 최소값 일 수 있습니다.

+3

어떻게 찾을 수 있습니까? –

+0

@DonalFellows : 나도 몰라! 미디어 유형을 검색 할 수 있어야합니까? 리소스에 대한 모든 링크가 type = ""특성을 포함 할 수 있다고 생각하지만, REST를 사용하는 가정은 응답을 실제로 이해하기 위해 클라이언트가 mediatypes를 인식해야한다는 것입니다. – Evert

+0

메시지를 요청한 다음 메시지를 반환하지 않는다는 뜻입니까? 오도 ​​된 것 같습니다. 나는 미디어 유형이 데이터가 의미하는 것이 아니라 형식을 지정하는 것이라고 생각했다. (그러나 다시, 나는 REST에 대해 아무것도 알지 못했다) – Verdagon

관련 문제