Заголовок диапазона HTTP для списков объектов - PullRequest
6 голосов
/ 23 октября 2011

У меня есть такие ресурсы

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

GET / entity получает список всех сущностей. Теперь я хочу опросить обновления. Случай для единственного юридического лица прост:

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

Список хитрый. Я хочу, чтобы ответом был список объектов, обновленных или созданных с определенного момента времени. Я бы интуитивно использовал

GET /entities
Range: after <http date>

Это действительный запрос по спецификации HTTP http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2. Но спецификация также требует ответа 206 Partial Content, который должен включать заголовок Content-Range. Заголовок Content-Range, в свою очередь, указывает диапазон байтов, который должен быть указан http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.16. Это явно очень неудобно для моего варианта использования.

Как бы вы запросили семантический диапазон по HTTP?

1 Ответ

2 голосов
/ 24 октября 2011

Из раздела чтения 14.35.1 я бы сказал, что заголовок Range используется для запроса определенного диапазона байтов у ресурса, а не для запроса группы объектов в соответствии с тем, когда они были модифицировано.

В этом случае я считаю, что вы должны рассматривать свой диапазон как фильтр и передавать дату как параметр строки запроса:

GET /entities?modified-since=<date>
...