2013-03-03 9 views
8

Come possiamo gestire la raccolta vuota su un'interfaccia RESTful, con l'intestazione Content-Range's items?Raccolta vuota e intestazioni HTTP Contenuto-

Ad esempio, con 42 record, una richiesta Range: items=0-41 restituisce tutto e l'intestazione della risposta sarà: Content-Range: items 0-41/42.

Tuttavia, come possiamo gestire l'intestazione Content-Range quando non ci sono record? Grazie per qualsiasi aiuto.

Edit:

Voglio dire, restituendo un insieme vuoto, il server può decidere di tornare Content-Range: items x-y/0, dove x e y sono un valore che sarebbe diverso da 0. Ma quale? Penso che questa sia una domanda appiccicosa, e le specifiche non ne parlano.

risposta

5

In realtà il server dovrebbe rispondere con una richiesta HTTP 416 non soddisfacente, con Content-Range: */0.

+0

Davvero? Un codice di stato completamente diverso per quando la raccolta è vuota? Mi aspetto uno stato 200 con un array vuoto come risultato. 'Content-Range: */0' ha senso comunque. –

+0

Guardandoci sopra, penso che lo stato 416 sia stato concepito per quando la richiesta include un'intestazione 'Range' che specifica un intervallo non valido. Tuttavia, se non è stato specificato alcun intervallo, vorresti comunque applicare un intervallo predefinito. Personalmente penso che 416 sia molto ostile anche se è stato specificato un intervallo. Se richiedo 'Range: 0-99' voglio solo ottenere la prima 'pagina' di 100 elementi. A chi importa se ce ne sono in realtà meno? Leggerò l'intestazione della risposta per capirlo. Ma se restituisce lo stato 416, in pratica costringiamo il cliente a richiedere il numero totale di risultati prima, separatamente. Non ha senso. –

+0

Penso che 416 abbia senso se * start * dell'intervallo era fuori limite. Ma per costringere i clienti a ottenere prima il totale in modo che possano regolare la * fine * dell'intervallo per rimanere nel totale, si finisce con un'API molto intuitiva (e lenta). –

0

Se si ottengono numeri diversi da zero per X-Y/0, la risposta dal server non è valida (interrotta). Segnala un bug.

+1

Ok. Quindi cosa dovrebbe rispondere al server se la raccolta è vuota? Avere 'Content-Range: 0-0/0' sarebbe impossibile, perché' 0-0' significa * 1 record * all'interno della collezione. – Doug

+1

Non c'è contenuto, quindi non si restituisce un'intestazione Content-Range. Se si * deve *, la specifica consente di restituire un asterisco ("*") nei casi in cui (Da RFC): "la lunghezza dell'istanza è sconosciuta nel momento in cui è stata generata la risposta." – Kylar

+0

* "Non c'è contenuto, quindi non restituiresti l'intestazione Content-Range." *, Non sono sicuro che abbia senso. Perché considerare una raccolta vuota come un'eccezione (senza intestazione di intervallo e stato 416 suggerito dalla risposta accettata)? Non ha senso nella mia mente. Una raccolta vuota è normale. Non c'è motivo di trattarlo come se fosse un caso strano. –

Problemi correlati