2011-02-18 3 views
4

Article and Author 리소스가있는 REST 시스템이 있습니다. 일반적으로 기사에 액세스 할 때 작성자의 이름을 알고 싶습니다. 나는 이것을 달성하기 위해 몇 가지 방법으로 기사를 만들 수있다. A) 저자 이름의 사본을 기사에 직접 삽입한다. 또는 B) 해당 저자 정보를 가리키는 URI에 기사의 URI를 포함해야합니다.REST 리소스 디자인 : 관련 데이터를 포함하는 VS 연결?

저자의 이름을 기사 자료로 직접 복사하는 것이 단점입니다. 정보를 여러 리소스에 복제함으로써 리소스간에 충돌이 발생합니다. 작성자가 이름을 업데이트하면 기사 리소스가 이전 이름을 가질 수 있고 작성자 리소스가 새 이름을 가질 수 있습니다.

아마도 캐시하지 않으면 문제가되지 않을까요? 그러나 실용적인 문제로, 신속성과 서버로 돌아갈 수있는 횟수를 줄이는 것이 매우 바람직하기 때문에 브라우저에서의 캐싱은 제가 쏘고있는 것입니다.

시나리오 B에서 URI를 사용한 링크가 정확하고 훨씬 캐시 친화적 인 것 같습니다. 그러나은 서버로 다시 호출하는 횟수를 두 배로 늘립니다. 모든 기사에는 작성자의 두 번째 (직렬) 페치가 필요합니다. 따라서 다른 방법으로는 비용이 많이 들고, 특히 여러 다른 URI에 대해 여러 개의 URI를 사용하는 경우에 특히 그렇습니다. 한 번에 50 개의 기사를 표시 할 때 이것은 미칠 수 있습니다.

다른 사람들이이 문제를 어떻게 해결했는지 알고 싶습니다. 독서력이있는 "모범 사례"에세이가 있습니까?

답변

1

연결은 서버로 다시 호출되는 횟수를 두 배로 만듭니다. 모든 기사에는 작성자의 두 번째 (직렬) 페치가 필요합니다.

REST는 데이터가 이미 로컬 캐시에 앉아 경우 모든에 을 할 필요가 없습니다 (또는 요청 될 수있는 "두 번째 가져 오기"고 정확하게 이런 이유로 캐시 제약을 포함하는 경우에만 캐시가 중개자이거나 서버 측인 경우 부분 네트워크 리소스를 사용합니다. 이를 활용할 수있는 방식으로 데이터를 설계 할 수 있다면 전체 네트워크 트래픽을 몇 배까지 줄일 수 있습니다. 그렇지 않으면 REST 아키텍처 스타일을 적용 할 필요가 없습니다. 이는 RPC와 같은 다른 스타일을 선택하여 네트워크 효율성을위한 캐싱에 달려 있습니다.