實作:部分回應

以下範例說明如何在 YouTube Data API (v3) 中擷取部分 API 回應。

注意:API 的入門指南會進一步說明部分要求和回應。

v3 API 允許 (且實際上需要) 擷取部分資源,以免應用程式轉移、剖析及儲存不必要的資料。這麼做也可以確保 API 更有效率地使用網路、CPU 和記憶體資源。

API 支援兩個要求參數:partfields,可讓您識別應納入 API 回應的資源屬性。part 參數也會指出應由插入或更新資源的 API 要求設定的屬性。

請注意,如果更新要求未為先前含有值的資源屬性指定值,且符合下列條件,系統會刪除現有值:

  • 要求可以修改屬性值。舉例來說,更新 video 資源時,您可以更新 snippet.description 屬性的值,但無法更新 snippet.thumbnails 物件的值。

  • 要求的 part 參數值會識別包含該屬性的資源部分。

範例

舉例來說,假設您想要更新下列 video 資源。(請注意,下方顯示的所有屬性都可以透過 API 更新,與範例無關的資源屬性已省略不列)。

{
  "snippet": {
    "title": "Old video title",
    "description": "Old video description",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  },
  "status": {
    "privacyStatus": "private",
    "publishAt": "2014-09-01T12:00:00.0Z",
    "license": "youtube",
    "embeddable": True,
    "publicStatsViewable": True
  }
}

您呼叫 videos.update 方法,並將 part 參數值設為 snippet。API 要求的主體包含下列資源:

{
  "snippet": {
    "title": "New video title",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  }
}

這項要求會更新影片標題、刪除說明,但不會變更標記或類別 ID。由於要求未指定 snippet.description 屬性的值,因此系統會刪除影片說明。

status 物件中的屬性完全不受影響,因為 part 參數值並未將 status 納入要求更新的部分。事實上,如果 API 要求的主體包含 status 物件,API 會傳回 400 (Bad Request) HTTP 回應,因為要求主體中包含意外的部分