如何以RESTful方式"延迟加载"?

Mar*_*eon 4 rest lazy-loading restful-url

提供此服务以获取有关酒店的信息:

> GET /hotel/{id}

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
>   <biggie>aaa....I am 300K</biggie >
< </hotel>
Run Code Online (Sandbox Code Playgroud)

问题是biggie300K,我们不希望每回复都返回它.什么是延迟加载此值的RESTful方法?

我们应该设置两个资源:

> GET /hotel/{id}

< HTTP/1.1 200 OK
< <hotel>
<   <a>aaa</a>
<   <b>aaa</b>
< </hotel>
Run Code Online (Sandbox Code Playgroud)

和..

> GET /hotel/{id}/biggie

< HTTP/1.1 200 OK
< <biggie>
<   <val>aaa....I am 300K</val>
< </biggie>
Run Code Online (Sandbox Code Playgroud)

你只GET /hotel/{id}/biggie需要在真正需要这些数据的时候提出要求吗?

这可行..虽然没有什么特别的,biggie除了它是一个大数据集.我认为将hotel所有属性保持在关卡状态更好,因为所有属性都只是属性hotel.

Dar*_*ler 13

别忘了,超媒体是你的朋友.

GET /hotel/{id}

HTTP/1.1 200 OK
<hotel Id="99">
  <a>aaa</a>
  <b>aaa</b>
  <biggieLink href="/Hotel/99/Biggie"/>
</hotel>
Run Code Online (Sandbox Code Playgroud)

或者你甚至可以做

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>
Run Code Online (Sandbox Code Playgroud)