ETag

ETag 是服务器附加到响应中的一个字符串,用于标识该特定表示形式的特定版本。它是不透明的:它可以是哈希值、版本号或时间戳,客户端绝不能尝试解释它——只能将其发送回服务器。

工作原理

读取数据时,客户端使用 If-None-Match 请求返回 ETag;如果 ETag 仍然匹配,服务器返回 304 Not Modified 响应,不包含响应体,客户端使用缓存的 ETag。写入数据时,客户端使用 If-Match 请求发送 ETag;如果 ETag 不再匹配,服务器返回 412 Precondition Failed 响应,写入操作被拒绝。相同的 ETag 值,两个不同的响应头,却对应着两个完全不同的任务——一个用于节省带宽,另一个用于防止数据丢失。

误解

ETag 不匹配意味着出了问题。412 错误是机制在起作用:这意味着在你读取资源之后,其他人修改了该资源,而你的写入操作会悄悄地覆盖他们的修改。正确的做法是重新读取、核对,然后使用新的 ETag 重试——而不是使用旧的 ETag 重试,因为那样会一直失败。

点击这里试试

足球和 FIBA 积分榜端点对条件读取返回 304。角色、英雄和电影写入接受 If-Match 请求,并在版本过时时返回真正的 412。

资料来源

其他术语

阅读英文版

所有术语 · 测试技巧 · 全部 39 个模拟 REST API

最后更新时间