每個 YouTube Data API 要求都可以指定 YouTube 應使用哪個 API 版本來處理該要求。如果要求未指定 API 版本,YouTube 會使用最舊的支援 API 版本來處理該要求。目前支援的最舊版本為 1。請注意 API 版本號碼的下列特性:
-
YouTube 可能會針對特定 API 版本發布更新,但該版本並未指派新的版本號碼。這些向下相容的更新可能包含選用的 API 功能、錯誤修正,或兩者皆有。
-
API 版本號碼的遞增值,可用來識別包含與先前 API 版本不相容變更的版本。
本文件定義了針對特定 API 版本更新的回溯相容性指南,也就是上述第一項。規範旨在區分下列類型的 API 功能:
-
這些規範會指出 API 功能,即使您未修改應用於處理 API 要求的 API 版本,這些功能仍可能會變更。程式碼應能處理這些變更,且不會中斷。舉例來說,如果 YouTube 在 API 回應中新增 XML 標記,您的程式碼就應忽略這些標記。
-
指南也定義了 YouTube 在更新特定 API 版本時,不會變更的 API 功能。換句話說,只有在 YouTube 發布新版 API 時,功能才會有所變更,因此程式碼不必嘗試處理這類變更。
關於這份文件
本文件包含以下章節:
-
「API 要求」專區會定義與 HTTP 要求標頭、API 要求參數、XML 元素名稱 (在 API 要求中顯示的名稱) 和格式不正確的 API 要求相關的回溯相容性指南。
-
「API 回應」部分定義了與 XML 元素名稱 (在 API 回應中顯示的名稱) 相關的回溯相容性指南,以及 XML 標記和屬性在 API 回應中顯示的順序。
-
最佳做法一節概述了將 YouTube API 與用戶端應用程式整合的建議。
API 要求
不打算變更的功能
-
現有要求參數。
-
具有列舉值的參數現有參數值,或這些參數值的含義。
-
在 API POST (插入) 或 PUT (更新) 要求中使用的 XML 元素名稱。
-
每種 API 要求類型所需的 HTTP 要求標頭組合。這項規範表示 YouTube 不打算新增必要的 HTTP 要求標頭,也不會將現有的選用要求標頭變更為必要標頭。
-
行為:除非要求使用
strict參數,否則會忽略 API 要求中的不支援參數,這會指示 YouTube 拒絕包含無效要求參數的 API 要求。
可能會變更的功能
-
YouTube 可能會新增選用要求參數。
-
YouTube 可能會為具有列舉值集的現有參數新增值。
-
YouTube 會拒絕任何要求,如果有效參數含有無效參數值,因此,如果剖析邏輯經過修正,由於剖析過於寬鬆而接受的格式不正確要求,可能會遭到拒絕。
-
YouTube 可能會新增選用的 HTTP 要求標頭。
-
YouTube 在插入或更新資源時,可能會變更所保留 (儲存) 的資訊。不過,這類決定不會影響或要求變更對應 API 要求的語法。
-
YouTube 可能會變更可瀏覽的類別組合,或可指派給新上傳影片的類別組合。
-
未說明的功能隨時可能會移除或變更。
API 回應
不打算變更的功能
-
現有的 XML 標記名稱。
-
依循媒體 RSS 規格,判斷該規格中定義的元素順序,以及在動態消息項目中出現多次的元素順序。舉例來說,如果項目包含多個
<media:thumbnail>標記,系統會依重要性排序。 -
<category>標記的term屬性值,用於識別動態饋給或動態饋給項目所描述的項目類型。在<feed>或<entry>標記中,<id>標記會指定項目所識別的專屬資源,而<category>標記則會識別項目所描述的資源類型。對於這個<category>標記,方案屬性的值為http://schemas.google.com/g/2005#kind,而詞彙屬性的值則表示動態饋給項目是否描述影片、播放清單連結、訂閱項目、聯絡人或其他實體類型。
可能會變更的功能
-
YouTube 可能會在 API 回應中新增 XML 標記。
-
YouTube 可能會在現有 XML 標記中新增屬性。
-
您可以使用不同的值重複現有 API 標記。舉例來說,YouTube 可以新增
<media:restriction>代碼,並使用不同的type值,或是新增<media:credit>代碼,並使用不同的scheme和role。 -
API 回應中的 XML 標記和屬性順序可能會變更。
-
選用的子標記可能會從 API 回應中移除。
-
未說明的功能隨時可能會移除或變更。
最佳做法
-
使用
<id>標記值來識別項目。 -
使用
self連結擷取項目。 -
使用
edit連結編輯或更新項目。 -
使用影片項目的
<yt:videoid>標記值,即可取得 YouTube 用來識別該影片的專屬值。請勿剖析連結中的影片 ID。 -
使用
<link>、<content>和<gd:feedLink>標記中指定的網址,在動態饋給之間瀏覽。YouTube 支援的網址有限,您可以透過這些網址擷取特定動態饋給。除了下列的動態饋給網址外,請勿自行建立動態饋給網址,因為這些網址可能會突然停止運作。- /feeds/api/videos/
<videoid> - /feeds/api/users/default
- /feeds/api/users/default/uploads
- /feeds/api/users/default/favorites
- /feeds/api/users/default/contacts
- /feeds/api/users/default/inbox
- /feeds/api/users/default/playlists
- /feeds/api/users/default/subscriptions
- /feeds/api/users/default/newsubscriptionvideos
- /feeds/api/standardfeeds/
regionID/feedID_CATEGORY_NAME(詳情請參閱參考指南)
- /feeds/api/videos/
-
請勿嘗試剖析 API 回應中網址的數字或英文字母 ID。API 回應會納入特定標記,用於連結至 YouTube 網站上的資源,例如影片 ID (
<yt:videoid>) 和使用者名稱 (<name>和<media:credit>).) -
如果您提交 API 要求來插入 (POST) 或更新 (PUT) 資訊,請使用該要求的 XML 回應,判斷 YouTube 實際儲存了哪些標記值。如API 要求的向後相容性規範所述,YouTube 在插入或更新資源時,可能會變更保留 (儲存) 的資訊,也就是說,要求中的部分標記可能會遭到忽略。
-
擷取 XML 動態饋給時,如果應用程式允許使用者更新該項目,請儲存與動態饋給項目相關的未知 XML 標記和屬性。如果使用者更新資源,您的應用程式應在更新要求中加入任何未知的標記和屬性。這項做法可確保應用程式在更新資源的過程中,不會不小心刪除與新 API 功能相關的資訊。
以下範例說明這項最佳做法:
- 您的應用程式可讓使用者更新影片說明。
- 您的應用程式使用 API 擷取影片項目,但無法辨識項目中的其中一個標記。
- 使用者修改影片說明。
- 您的應用程式必須將完整的影片項目傳回 API。項目必須包含步驟 2 中的未知標記,否則系統可能會刪除該值。
-
請先確認代碼存在且含有非空值,再嘗試顯示代碼值。
-
如上所述,YouTube 可能會為現有標記或屬性 (具有列舉的值集) 新增值。一般來說,程式碼應剖析具有列舉值集的 XML 元素值,然後定義相應的動作。即使元素只列舉一個可能的值,也建議採用這種做法。
例如,
<media:credit>標記可用來識別影片擁有者。標記的role屬性只有uploader這個已記錄的值,表示影片是由 YouTube 合作夥伴上傳。這項最佳做法規定,應用程式必須先確認標記的role屬性值確實為uploader,才能將對應使用者識別為影片擁有者。(這項預防措施可確保 YouTube 為影片新增其他類型的製作人員 (例如導演) 時,您的程式碼不會誤認影片擁有者。)-
如果標記含有枚舉的值集,而您無法辨識該標記的值,則應忽略標記所在的整個
<entry>。 -
如果
<category>標記的scheme屬性值為http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat,而您無法辨識term屬性值,請忽略訂閱動態饋給項目。該特定標記會標示項目所代表的訂閱類型。如果應用程式無法辨識訂閱類型,則不應顯示該項目的相關資訊。 -
如果其他屬性有列舉的值集,而您不認識該屬性的值,則應忽略該屬性出現的標記。
-
-
應用程式程式碼應隨時都能接收
yt:error訊息。如果 API 作業失敗,應用程式應識別錯誤,並向使用者顯示有意義的訊息。 -
YouTube 隨時可能會新增類別,用於分類影片。YouTube 也可能會更新或淘汰現有類別。你可以從 http://gdata.youtube.com/schemas/2007/categories.cat 擷取目前的類別檔案。
-
在 API 回應中使用
<link>標記,即可識別動態消息中前一個和/或下一個項目頁面的分頁連結。詳情請參閱參考指南的「瀏覽結果」一節。