我有这样的资源
/entities # GET, POST
/entities/<id> # GET, PUT, DELETE
GET / entities获取所有实体的列表。 现在我想轮询更新。单个实体的情况很简单:
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请求语义范围?
答案 0 :(得分:2)
从阅读部分14.35.1,我会说Range
标头用于从资源请求特定范围的字节,而不是根据修改时间请求一组实体。
在这种情况下,我相信您应该将您的范围视为过滤器,并将日期作为查询字符串参数传递:
GET /entities?modified-since=<date>