2011-10-23 13 views
6

Mam zasobów jak toHTTP Header dla Jednostki Zakres wymienia

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

GET/podmioty pobiera listę wszystkich podmiotów. Teraz chcę sondować aktualizacje. Sprawa dla pojedynczego podmiotu jest prosta:

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

Lista jest trudna. Chcę, aby odpowiedź była listą jednostek, aktualizowanych lub tworzonych od danej chwili. Chciałbym intuicyjnie używać

GET /entities 
Range: after <http date> 

która jest ważna prośba o specyfikacji HTTP http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2. Ale specyfikacja wymaga również odpowiedzi 206 Partial Content, która musi zawierać nagłówek Content-Range. Nagłówek Content-Range nakazuje określić zakres bajtów na http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16. Jest to oczywiście bardzo niewygodne w moim przypadku użycia.

Jak zażądać zakresu semantycznego za pośrednictwem protokołu HTTP?

+0

Czy na pewno 'Range' może być używany z datą? Sekcja 14.35.1 omawia tylko zakresy bajtów. –

+0

Zgadzam się z @adrift, nie mogę znaleźć żadnego odniesienia w żadnym RFC do 'Range: po ' jest ważne w HTTP/1.1 - gdyby tak było, nagłówek 'Content-Range:' zostałby zdefiniowany, aby się do niego dostosować, w przeciwnym razie praktyka byłaby tylko w połowie zdefiniowana. – DaveRandom

+0

Wygląda na to, że specyfikacja Httpbis zawiera nieco więcej informacji na temat zakresów nieobjętościowych: http://tools.ietf.org/html/draft-ietf-httpbis-p5-range-16 –

Odpowiedz

2

Z sekcji czytania 14.35.1, chciałbym powiedzieć, że nagłówek Range służy do żądania określonego zakresu bajtów z zasobu, a nie do żądania grupy jednostek zgodnie z czasem ich modyfikacji.

W tym przypadku, uważam, należy traktować jako filtr zakres i przekazać datę jako parametru ciąg kwerendy:

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

To też zawarłem. Zakresy nie będące bajtami wydają się być dozwolone ze względu na przyszłą kompatybilność, ale bardzo niedookreślone. – Bendlas