2011-10-23 11 views
6

devo risorse come questoHTTP intestazione di intervallo per Entity elenca

/entities  # GET, POST 
/entities/<id> # GET, PUT, DELETE 

GET/entità ottiene l'elenco di tutte le entità. Ora voglio eseguire il polling per gli aggiornamenti. Il caso per una singola entità è semplice:

GET /entities/2 
If-Modified-Since: <http date> 

L'elenco è difficile. Voglio che la risposta sia una lista di entità, aggiornate o create da un determinato punto nel tempo. Avevo intuitivamente uso

GET /entities 
Range: after <http date> 

Che è una richiesta valida dalla specifica HTTP http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2. Ma la specifica richiede anche una risposta 206 Partial Content, che deve includere un'intestazione Content-Range. Un'intestazione Content-Range, a sua volta, richiede un intervallo di byte da specificare http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16. Questo è ovviamente molto scomodo per il mio caso d'uso.

Come si richiede un intervallo semantico su HTTP?

+0

sei sicuro 'Range' può essere utilizzato con una data? La Sezione 14.35.1 tratta solo gli intervalli di byte. –

+0

Sono d'accordo con @adrift, non riesco a trovare alcun riferimento in nessuna RFC a "Range: dopo " essendo valido in HTTP/1.1 - se lo fosse, l'intestazione 'Content-Range:' sarebbe stata definita in modo da soddisfarla, altrimenti la pratica sarebbe solo a metà definita. – DaveRandom

+0

Le specifiche Httpbis sembrano avere maggiori dettagli sugli intervalli non byte http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-16 –

risposta

2

Dalla sezione di lettura 14.35.1, direi che l'intestazione Range viene utilizzata per richiedere un intervallo specifico di byte da una risorsa, non per richiedere un gruppo di entità in base a quando sono state modificate.

In questo caso, credo che si dovrebbe trattare la vostra gamma da filtro e passare la data come un parametro di stringa di query:

GET /entities?modified-since=<date> 
+0

Questo è quello che ho concluso anch'io. Le gamme non di byte sembrano essere consentite per motivi di compatibilità futura, ma molto poco specificate. – Bendlas

Problemi correlati