如何在YouTube API中使用ETag

时间:2015-06-17 17:34:40

标签: node.js youtube youtube-api youtube-javascript-api youtube-channels

显然,我们可以根据their documentation中的以下声明,使用ETag查看频道/播放列表是否已更新:

  

当您的应用程序再次请求存储的资源时,它指定   与该资源相关联的ETag。如果资源发生了变化,   API返回修改后的资源和与之关联的ETag   那个版本的资源。如果资源未更改,则为API   返回HTTP 304响应(未修改),表示该响应   资源没有改变。

但我试图得到一个没有变化的频道数据,但经过几次刷新后,似乎ETag会跳到不同的值!

1 个答案:

答案 0 :(得分:2)

您不能再次点击端点并比较etag值;相反,您必须发出请求,存储etag值,然后将该etag值传递给后续请求。您将执行此操作是请求标头...将HTTP标头“If-None-Match”设置为您的etag的值。如果没有任何变化,您将获得304(而不是任何内容或元数据)。如果某些内容发生了变化,您将获得一个新结果,并且您将获取新的etag并将其存储而不是旧的。

适用于Javascript的Google API客户端支持此标头;当你创建gapi.client.request对象时,你将传入一个参数对象;此对象的其中一个参数是“标题”,您可以在其中设置“If-None-Match”等于您要检查的etag。

(另请注意,还有一个'If-Match'标题,它也可以与etags一起使用,如果资源是您之前请求的SAME,它只返回内容...可能没有那么多的用例,但它存在并得到支持。)