youtube api v3 / search是否支持etags?

时间:2016-02-12 04:01:15

标签: youtube-api etag youtube-data-api

我正在尝试使用etags来减少带宽和配额使用量,但是/搜索会返回一个新的etag,即使没有任何变化。如果我在标题中指定了前一个etag,它仍然会发送内容。

是否支持api调用或我可能做错了什么?

1 个答案:

答案 0 :(得分:2)

youtube支持Etags,但这取决于您要求的数据类型

  ETAG是HTTP协议的标准部分,允许应用程序引用特定API资源的特定版本。资源可以是整个Feed或该Feed中的项目。此功能支持以下用例:

     

缓存和条件检索 - 您的应用程序可以缓存API   资源及其ETag。然后,当您的应用程序请求时   再次存储资源,它指定与之关联的ETag   资源。如果资源已更改,则API将返回已修改的内容   资源和与该版本资源相关联的ETag。如果   资源未更改,API返回HTTP 304响应   (未修改),表示资源未更改。   您的应用程序可以通过服务减少延迟和带宽使用   以这种方式缓存资源。

     

Google API的客户端库对ETag的支持不同。   例如,JavaScript客户端库通过a支持ETag   允许请求标头的白名单,包括If-Match和   如果 - 无 - 匹配。白名单允许正常的浏览器缓存发生   如果资源的ETag没有改变,则可以提供资源   来自浏览器缓存。另一方面,Obj-C客户端没有   支持ETags。防止无意中覆盖更改 -   ETag有助于确保多个API客户端不会无意中发生   覆盖彼此的变化。更新或删除资源时,   您的应用程序可以指定资源的ETag。如果ETag没有   匹配该资源的最新版本,然后是API请求   失败。

     

在应用程序中使用ETag可带来以下好处:

     

API对缓存但未更改的请求响应更快   资源,产生较低的延迟和较低的带宽使用率。您的   应用程序不会无意中覆盖对资源的更改   这是由另一个API客户端制作的。

https://developers.google.com/youtube/v3/getting-started#etags

我经常刮Youtube进行视频搜索,我只是存储它返回的Etag。要使用etag,请创建标头请求并输入" If-None-Match"等于你的etag值。请注意,这应该是请求标头,而不是附加到端点调用。您还可以使用" If-Match"。

根据您使用的API类型,将新值插入请求标头的方式可能略有不同