如何在Youtube API中使用etag

时间:2018-01-20 17:48:20

标签: youtube-api youtube-data-api

我想了解 etag 如何与Youtube API协同工作。以下是我的要求:

class BookStuff {
    private static Book[] inventory;
    private static final int MAX_BOOKS = 5;

    static void createBooks() {
        inventory = new Book[MAX_BOOKS];
        // ...
    }

    static void readBook(int index) {
        inventory[index].read();
    }
}

这是我得到的回应:

curl -X GET \
  'https://www.googleapis.com/youtube/v3/channels?part=statistics&fields=items&id=UCmRtPmgnQ04CMUpSUqPfhxQ' \
  -H 'Authorization: Bearer dezferfnr....' \
  -H 'Cache-Control: no-cache' \
  -H 'If-None-Match: \"g7k5f8kvn67Bsl8L-Bum53neIr4/4ygpLCFz2IoIJNkG3XO1Pys1hck\"'

正如您所看到的,响应中找到的 etag 与我在请求标头中发送的 etag 相同,我无法理解为什么我没有收到HTTP 304响应(相反,没有修改。

1 个答案:

答案 0 :(得分:0)

尝试删除etag开头和结尾的转义双引号(保留未转义的双引号,因为它们是etag的一部分):

curl -X GET \
    'https://www.googleapis.com/youtube/v3/channels?part=statistics&fields=items&id=UCmRtPmgnQ04CMUpSUqPfhxQ' \
    -H 'Authorization: Bearer dezferfnr....' \
    -H 'Cache-Control: no-cache' \
    -H 'If-None-Match: "g7k5f8kvn67Bsl8L-Bum53neIr4/4ygpLCFz2IoIJNkG3XO1Pys1hck"'

(使用curl -i -X GET...在CLI中查看响应的标题,您会看到304状态,否则它将是空字符串)。