我正在设计一个 REST API,我需要根据客户端提供的时间戳(反过来,将由API 在先前的响应中)。为此,我正在考虑使用 Last-Modified 和 If-Modified-Since 标头。
这里较早的问题(例如Is it valid to modify a REST API representation based on a If-Modified-Since header?)似乎表明这是不赞成的,因为RFC2616表明这些标头的目的与缓存有关. 但是,从那时起,RFC2616 已被RFC7232取代,其中指出
If-Modified-Since 通常用于两个不同的目的:1) 允许有效更新没有实体标签的缓存表示和 2) 将 Web 遍历的范围限制为最近更改的资源。
我的解释是,我允许检索自上次检索以来对集合的所有更改的用例包含在第二个目的中。
所以我有两个问题:
- 这种解释是正确的,还是我在这里遗漏了一些微妙的东西?
- 即使我的解释是正确的,以这种方式使用这些标题是否是一种好习惯?换句话说:还有什么其他原因不使用这些标头,例如,在响应中包含时间戳并允许客户端在下一个请求的查询字符串中提供该时间戳?