YouTube V3的 If-None-Match头是不是无操作?

后端开发 2026-07-11

考虑如下代码,我期望当提供的 Etag 与远端相同时,调用会返回一个错误。
但在测试时,是否匹配其实并不重要。

func (f *getFacade) callVideoList() (*youtube.VideoListResponse, error) {
    call := f.service.Videos.List([]string{"snippet", "status"})
    call.Id(f.video.GoogleID).IfNoneMatch(f.video.GoogleEtag)
    return call.Do()
}

内部文档写着:

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *VideosListCall) IfNoneMatch(entityTag string) *VideosListCall {
    c.ifNoneMatch_ = entityTag
    return c
}

所以这是个无操作,还是我做错了什么?

解决方案

经过更多的研究,IfNoneMatch 确实有效,但在列表项(视频)Etag 上不起作用。它在List Etag 上起作用。

由于没有用于获取单个视频的端点,在我的场景中这有点儿没用。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章