4

ホテルに関する情報を取得するためのこのサービスを考えると:

> GET /hotel/{id}

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

問題はそれbiggieが300Kであり、すべての応答でそれを返したくないということです。この値を遅延ロードするためのRESTfulな方法は何ですか?

2つのリソースを設定する必要があります。

> 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

4

3 に答える 3

13

ハイパーメディアはあなたの友達であることを忘れないでください。

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>
于 2009-10-26T17:30:52.320 に答える
3

2つのリソースとして設定することは機能しますが、それが気に入らない場合は、キャッシュの使用を検討することができます。データの性質によっては、複数のリソースに分割するよりも実際に負荷を節約できる場合があります。

于 2009-10-26T17:13:45.177 に答える
1

あなたの解決策は大丈夫だと思います。完璧な答えはありませんが、次の3つの可能性があります。

  1. 毎回すべての属性を送信する
  2. 要求に応じて属性を個別に送信します(/{id}/a、、)/{id}/b/{id}/biggie
  3. あなたが提案するように、異常なものを除いてすべての属性を送ってください。

1と2は統一されているので便利ですが、3はあなたの場合、または1つのデータにログイン資格情報が必要な場合などに意味があります。

(2には、すべての属性の名前を知っている必要があるリクエスターとの緊密な結合が必要になるという欠点もあります。)

于 2009-10-26T17:18:31.800 に答える