문제

호텔에 대한 정보를 얻기 위해이 서비스가 주어진다 :

> GET /hotel/{id}

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
>   <biggie>aaa....I am 300K</biggie >
< </hotel>

문제는 그게됩니다 biggie 300K이고 우리는 모든 응답으로 반환하고 싶지 않습니다. 이 값을 게으른로드하는 나머지 방법은 무엇입니까?

두 가지 리소스를 설정해야합니까?

> GET /hotel/{id}

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
< </hotel>

그리고..

> GET /hotel/{id}/biggie

< HTTP/1.1 200 OK
< <biggie>
<   <val>aaa....I am 300K</val>
< </biggie>

그리고 당신은 단지 요청합니다 GET /hotel/{id}/biggie 실제로 그 데이터가 필요할 때?

이것은 효과가있을 것입니다 .. 특별한 것은 없지만 biggie 큰 데이터 세트라는 점을 제외하고. 모든 것을 유지하는 것이 더 좋다고 생각합니다. hotel 모든 속성이 실제로 속성 일뿐입니다. hotel.

도움이 되었습니까?

해결책

잊지 마세요, 하이퍼 미디어는 당신의 친구입니다.

GET /hotel/{id}

HTTP/1.1 200 OK
<hotel Id="99">
  <a>aaa</a>
  <b>aaa</b>
  <biggieLink href="/Hotel/99/Biggie"/>
</hotel>

아니면 할 수도 있습니다

GET /hotel/{id}

HTTP/1.1 200 OK
<hotel Id="99">
  <a>aaa</a>
  <b>aaa</b>
  <biggieSynopsis href="/Hotel/99/Biggie">
    <title>Here is a a summary of biggie</title>
  </biggieSynopsis
</hotel>

다른 팁

두 가지 리소스로 설정하는 것이 효과가 있지만 마음에 들지 않으면 캐싱을 사용하는 것을 살펴볼 수 있습니다. 데이터의 특성에 따라 여러 리소스로 분할하는 것보다 실제로 더 많은 부하를 절약 할 수 있습니다.

솔루션이 괜찮다고 생각합니다. 완벽한 대답은 없지만 세 가지 가능성은 다음과 같습니다.

  1. 매번 모든 속성을 보내십시오
  2. 요청 된대로 개별적으로 속성을 보내십시오 (/{id}/a, /{id}/b, /{id}/biggie)
  3. 당신이 제안한대로 특이한 속성을 제외한 모든 속성을 보내십시오.

1과 2는 균일하기 때문에 좋지만 3은 귀하의 경우 또는 한 조각의 데이터에 로그인 자격 증명이 필요한 경우에 의미가 있습니다.

(2는 또한 모든 속성의 이름을 알아야하는 요청자와 더 단단한 커플 링을 요구하는 단점이 있습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top