Domanda

Dato questo servizio per ottenere informazioni su un hotel:

> GET /hotel/{id}

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

Il problema è che biggie è 300K e non vogliamo restituirlo ad ogni risposta. Qual è il modo RESTful per caricare pigro questo valore?

Dovremmo impostare due risorse:

> GET /hotel/{id}

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

e ..

> GET /hotel/{id}/biggie

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

E richiedi GET / hotel / {id} / biggie quando hai davvero bisogno di quei dati?

Funzionerebbe .. sebbene non ci sia nulla di speciale in biggie tranne che è un set di dati di grandi dimensioni. Penso che sia meglio mantenere tutto a livello di hotel poiché tutti gli attributi sono in realtà solo attributi di hotel .

È stato utile?

Soluzione

Non dimenticare, hypermedia è tuo amico.

GET /hotel/{id}

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

o puoi persino farlo

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>

Altri suggerimenti

L'impostazione come due risorse funzionerebbe, ma se non ti piace, puoi esaminare la memorizzazione nella cache; a seconda della natura dei dati, ciò potrebbe effettivamente farti risparmiare più carico rispetto alla suddivisione in più risorse.

Penso che la tua soluzione vada bene. Non esiste una risposta perfetta, ma tre possibilità sono:

  1. Invia tutti gli attributi, ogni volta
  2. Invia gli attributi individualmente come richiesto ( / {id} / a , / {id} / b , / {id} / biggie )
  3. Invia tutti gli attributi TRANNE quelli insoliti, come suggerisci.

1 e 2 sono utili perché sono uniformi, ma 3 ha senso nel tuo caso o nel caso in cui un dato richieda credenziali di accesso, ad esempio.

(2 ha anche l'inconveniente di richiedere un accoppiamento più stretto con il richiedente, che deve conoscere il nome di ogni attributo.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top