Первый шаг:
Я отправил запрос GET
curl --location --request GET 'https://www.googleapis.com/youtube/v3/videos?key={API_KEY}&part=id&chart=mostPopular®ionCode=es&videoCategoryId=17&maxResults=25'
Я получил ответ 200 OK, тело:
{
"kind": "youtube#videoListResponse",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/CcRzMe1sxt_kvnG7LpS3dIQoCig\"",
"nextPageToken": "CBkQAA",
"pageInfo": {
"totalResults": 181,
"resultsPerPage": 25
},
"items": [
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/_GxV3cYD2wcterTfViCosiAVb54\"",
"id": "LGnQfH8dnow"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/-qYNOMCfpr8knbAS5auTTwRVt5Q\"",
"id": "3cO8sTv9aE4"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/4VBqB7u16yEkTMk6sSYEOI4P-hs\"",
"id": "8-7b4Ixavrg"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/ppyJEw0-OpZ3VI56IIn4vwl6Ja8\"",
"id": "tZvxbUosFWw"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/qk0x2ve66gTYW6_g8O4BWlfrvJU\"",
"id": "_4-KEZw9bX4"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/XP7oKSr0MwfURXwaW5nr1Qi8WbE\"",
"id": "sgERdPX_dkM"
},
...(other videos...)
]
}
Я сохранил значение body.etag
в кеше , на моей стороне. Это значение: "etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/CcRzMe1sxt_kvnG7LpS3dIQoCig\""
Я отправил тот же запрос GET еще раз, но я добавил If-None-Match: "tnVOtk4NeGU6nDncDTE5m9SmuHc/CcRzMe1sxt_kvnG7LpS3dIQoCig"
HTTP-заголовок к этому запросу GET.
curl --location --request GET 'https://www.googleapis.com/youtube/v3/videos?key={API_KEY}&part=id&chart=mostPopular®ionCode=es&videoCategoryId=17&maxResults=25' \
--header 'If-None-Match: "tnVOtk4NeGU6nDncDTE5m9SmuHc/CcRzMe1sxt_kvnG7LpS3dIQoCig"'
Я получил ответ 200 OK, тело:
{
"kind": "youtube#videoListResponse",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/_ruxn7w4X-iRBUUok6BWY66DtLU\"",
"nextPageToken": "CBkQAA",
"pageInfo": {
"totalResults": 181,
"resultsPerPage": 25
},
"items": [
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/_GxV3cYD2wcterTfViCosiAVb54\"",
"id": "LGnQfH8dnow"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/-qYNOMCfpr8knbAS5auTTwRVt5Q\"",
"id": "3cO8sTv9aE4"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/4VBqB7u16yEkTMk6sSYEOI4P-hs\"",
"id": "8-7b4Ixavrg"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/ppyJEw0-OpZ3VI56IIn4vwl6Ja8\"",
"id": "tZvxbUosFWw"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/qk0x2ve66gTYW6_g8O4BWlfrvJU\"",
"id": "_4-KEZw9bX4"
},
{
"kind": "youtube#video",
"etag": "\"tnVOtk4NeGU6nDncDTE5m9SmuHc/XP7oKSr0MwfURXwaW5nr1Qi8WbE\"",
"id": "sgERdPX_dkM"
},
...(other videos...)
]
}
Я ожидаю получить 304 без изменений, не 200 OK и тот же результат. Но я все еще получаю 200 OK и новый etag в теле ответа. Смотрите снимок экрана.
Я ожидаю получить только один первый ответ. Я ожидаю получить 304, когда запрашиваю тот же запрос с If-None-Match: "tnVOtk4NeGU6nDncDTE5m9SmuHc/CcRzMe1sxt_kvnG7LpS3dIQoCig"
, не вызывает изменений в запрашиваемых данных.