Richtlinien zur Abwärtskompatibilität

In jeder YouTube Data API-Anfrage kann die Version der API angegeben werden, die YouTube für die Verarbeitung dieser Anfrage verwenden soll. Wenn in einer Anfrage keine API-Version angegeben ist, verwendet YouTube die älteste unterstützte Version der API, um diese Anfrage zu verarbeiten. Die älteste unterstützte Version ist derzeit 1. Beachten Sie die folgenden Eigenschaften von API-Versionsnummern:

  • YouTube veröffentlicht möglicherweise Aktualisierungen einer bestimmten API-Version, für die keine neue Versionsnummer zugewiesen wurde. Diese abwärtskompatiblen Updates können optionale API-Funktionen und Fehlerkorrekturen umfassen.

  • Ein Inkrement der API-Versionsnummer gibt einen Release an, der Änderungen enthält, die mit vorherigen API-Versionen nicht kompatibel sind.

In diesem Dokument werden Richtlinien zur Abwärtskompatibilität für Aktualisierungen einer bestimmten API-Version definiert. Dies ist das erste oben aufgeführte Element. Die Richtlinien unterscheiden zwischen den folgenden Arten von API-Funktionen:

  • Die Richtlinien beschreiben API-Funktionen, die sich auch ändern können, wenn Sie die API-Version, die für die Verarbeitung Ihrer API-Anfragen verwendet werden sollte, nicht ändern. Ihr Code sollte diese Änderungen reibungslos verarbeiten können. Wenn YouTube beispielsweise neue XML-Tags zu API-Antworten hinzufügt, werden diese Tags im Code ignoriert.

  • In den Richtlinien wird auch die API-Funktionalität definiert, die YouTube nicht ändert, wenn eine bestimmte API-Version aktualisiert wird. Mit anderen Worten: Du solltest nur erwarten, dass sich diese Funktionalität ändert, wenn YouTube eine neue API-Version veröffentlicht und dein Code nicht versucht, diese Änderungen zu verarbeiten.

Informationen zu diesem Dokument

Diese FAQ sind in folgende Abschnitte gegliedert:

  • Im Abschnitt API-Anfragen werden Richtlinien zur Abwärtskompatibilität für HTTP-Anfrageheader, API-Anfrageparameter, XML-Elementnamen (wie sie in API-Anfragen vorkommen) und falsch formatierte API-Anfragen definiert.

  • Im Abschnitt API-Antworten sind Richtlinien zur Abwärtskompatibilität von XML-Elementnamen, die in API-Antworten enthalten sind, und die Reihenfolge von XML-Tags und -Attributen in API-Antworten festgelegt.

  • Im Abschnitt Best Practices findest du Empfehlungen zur Einbindung der YouTube API in deine Client-Anwendung.

API-Anfragen

Funktionen, die sich nicht ändern sollen

  • Vorhandene Anfrageparameter.

  • Vorhandene Parameterwerte für Parameter, die Aufzählungswerte oder die Bedeutung dieser Parameterwerte haben.

  • Die Namen von XML-Elementen, die in API POST- (insert) oder PUT (update)-Anfragen verwendet werden.

  • Die Gruppe der HTTP-Anfrageheader, die für jede Art von API-Anfrage erforderlich sind. Diese Richtlinie bedeutet, dass YouTube nicht vorhat, erforderliche HTTP-Anfrageheader hinzuzufügen oder vorhandene optionale Anfrageheader zu ändern.

  • Das Verhalten beim Ignorieren nicht unterstützter Parameter in einer API-Anfrage, es sei denn, für die Anfrage wird der Parameter strict verwendet, der YouTube anweist, eine API-Anfrage mit ungültigen Anfrageparametern abzulehnen.

Funktionalität kann sich ändern

  • YouTube kann optionale Anfrageparameter hinzufügen.

  • YouTube kann neue Werte für vorhandene Parameter hinzufügen, die Aufzählungen von Werten enthalten.

  • YouTube kann alle Anfragen mit ungültigen Parameterwerten ablehnen. Infolgedessen werden falsch gebildete Anforderungen, die aufgrund eines zu nachsichtigen Parsings akzeptiert wurden, abgelehnt, wenn die Parsinglogik korrigiert wird.

  • YouTube kann optionale HTTP-Anfrageheader hinzufügen.

  • YouTube kann die Informationen, die er speichert (speichert), beim Einfügen oder Aktualisieren einer Ressource ändern. Eine solche Entscheidung würde jedoch keine Auswirkungen auf die Syntax der entsprechenden API-Anfragen haben oder erfordern.

  • YouTube kann den Satz der durchsuchbaren Kategorien oder den Kategorien, denen neu hochgeladene Videos zugewiesen werden können, ändern.

  • Nicht dokumentierte Funktionen können jederzeit entfernt oder geändert werden.

API-Antworten

Funktionen, die sich nicht ändern sollen

  • Vorhandene XML-Tag-Namen

  • Anhand der Media RSS-Spezifikation können Sie die Reihenfolge der Elemente festlegen, die in der Spezifikation definiert sind und mehrmals in einem Feedeintrag vorkommen. Wenn ein Eintrag beispielsweise mehrere <media:thumbnail>-Tags enthält, werden diese nach Wichtigkeit sortiert.

  • Der term-Attributwert des <category>-Tags, der den in einem Feed oder Feedeintrag beschriebenen Artikeltyp identifiziert. Im Tag <feed> oder <entry> gibt das Tag <id> die eindeutige Ressource an, die durch den Eintrag identifiziert wird, und ein Tag <category> definiert die Art der Ressource, die durch den Eintrag beschrieben wird. Für dieses <category>-Tag lautet der Wert des Schemaattributs http://schemas.google.com/g/2005#kind und der Wert des Begriffsattributs gibt an, ob Feedeinträge Videos, Playlist-Links, Abos, Kontakte oder einen anderen Entitätstyp beschreiben.

Funktionalität kann sich ändern

  • YouTube kann neuen API-Antworten neue XML-Tags hinzufügen.

  • YouTube kann bestehenden XML-Tags neue Attribute hinzufügen.

  • Vorhandene API-Tags können mit verschiedenen Werten wiederholt werden. YouTube könnte beispielsweise ein neues <media:restriction>-Tag mit einem anderen type-Wert oder ein neues <media:credit>-Tag mit einem anderen scheme und role hinzufügen.

  • Die Reihenfolge der XML-Tags und Attribute in der API-Antwort kann sich ändern.

  • Optionale untergeordnete Tags können aus API-Antworten entfernt werden.

  • Nicht dokumentierte Funktionen können jederzeit entfernt oder geändert werden.

Best Practices

  • Verwenden Sie den Tag-Wert <id>, um einen Eintrag zu identifizieren.

  • Verwenden Sie den Link self, um einen Eintrag abzurufen.

  • Über den Link edit können Sie einen Eintrag bearbeiten oder aktualisieren.

  • Verwende den <yt:videoid>-Tag-Wert für einen Videoeintrag, um den Wert zu erhalten, den YouTube zur eindeutigen Identifizierung dieses Videos verwendet. Die Video-ID eines Links darf nicht geparst werden.

  • Verwenden Sie die in den Tags <link>, <content> und <gd:feedLink> angegebenen URLs, um zwischen Feeds zu wechseln. YouTube unterstützt eine begrenzte Anzahl von URLs, die du zuverlässig erstellen kannst, um bestimmte Feeds abzurufen. Abgesehen von den unten aufgeführten Feed-URLs sollten Sie keine eigenen Feed-URLs erstellen, da diese unter Umständen unerwartet nicht mehr funktionieren.

    • /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. Weitere Informationen finden Sie im Referenzhandbuch.

  • Versuchen Sie nicht, numerische oder alphanumerische Kennungen aus URLs in einer API-Antwort zu parsen. API-Antworten enthalten bestimmte Tags für Kennungen, die auf Ressourcen auf der YouTube-Website verweisen, z. B. Video-IDs (<yt:videoid>) und Nutzernamen (<name> und <media:credit>).).

  • Wenn du eine API-Anfrage zum Einfügen (POST) oder Aktualisieren (PUT)-Informationen einreichst, verwende die XML-Antwort auf diese Anfrage, um festzustellen, welche Tag-Werte in der Anfrage tatsächlich von YouTube gespeichert wurden. Gemäß den Richtlinien zur Abwärtskompatibilität für API-Anfragen kann YouTube die Informationen ändern, die beim Einfügen oder Aktualisieren einer Ressource gespeichert werden (speichert). Das bedeutet, dass einige der Tags in der Anfrage möglicherweise ignoriert werden.

  • Speichern Sie beim Abrufen eines XML-Feeds nicht erkannte XML-Tags und Attribute, die mit einem Feedeintrag in Verbindung stehen, falls Ihre Anwendung dem Nutzer die Aktualisierung dieses Eintrags ermöglicht. Wenn der Nutzer die Ressource aktualisiert, sollte die Anwendung alle nicht erkannten Tags und Attribute in der Aktualisierungsanfrage enthalten. Durch diese Vorgehensweise wird sichergestellt, dass Ihre Anwendung beim Aktualisieren einer Ressource nicht versehentlich Daten im Zusammenhang mit neuen API-Funktionen löscht.

    Das folgende Beispiel veranschaulicht diese Best Practice:

    1. Mit deiner Anwendung kann ein Nutzer eine Videobeschreibung aktualisieren.
    2. Ihre Anwendung ruft den Videoeintrag mithilfe der API ab, erkennt jedoch keines der Tags im Eintrag.
    3. Der Nutzer ändert die Videobeschreibung.
    4. Ihre Anwendung muss einen vollständigen Videoeintrag zurück an die API senden. Der Eintrag muss das nicht erkannte Tag aus Schritt 2 enthalten. Andernfalls wird dieser Wert möglicherweise gelöscht.

  • Prüfen Sie, ob ein Tag vorhanden ist und einen Wert enthält, der nicht null ist, bevor Sie den Tag-Wert anzeigen.

  • Wie oben erwähnt, kann YouTube neue Werte für vorhandene Tags oder Attribute hinzufügen, die Aufzählungen von Werten enthalten. Ihr Code sollte in der Regel die Werte von XML-Elementen parsen, die Aufzählungen von Werten haben, und dann entsprechende Aktionen definieren. Diese Vorgehensweise wird auch dann empfohlen, wenn nur ein möglicher Wert für das Element aufgezählt wird.

    Beispielsweise identifiziert das Tag <media:credit> den Eigentümer eines Videos. Der einzige dokumentierte Wert für das role-Attribut des Tags ist uploader. Dies bedeutet, dass das Video von einem YouTube-Partner hochgeladen wurde. Diese Best Practice legt fest, dass in Ihrer Anwendung bestätigt werden muss, dass der Wert des role-Attributs des Tags tatsächlich uploader ist, bevor der entsprechende Nutzer als Videoinhaber identifiziert wird. Diese Vorsichtsmaßnahme stellt sicher, dass dein Code einen Videoinhaber nicht falsch identifiziert, wenn YouTube für ein Video andere Arten von Gutschriften hinzufügt (z.B. Regisseur).

    • Wenn ein Tag eine Aufzählung von Werten hat und Sie den Wert dieses Tags nicht erkennen, sollten Sie das gesamte <entry> ignorieren, in dem das Tag enthalten ist.

    • Wenn du den Wert des term-Attributs für das <category>-Tag mit dem scheme-Attributwert http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat nicht kennst, ignoriere den Abofeedeintrag. Dieses bestimmte Tag gibt die Art des Abonnements an, das durch den Eintrag identifiziert wird. Wenn Ihre Anwendung den Abotyp nicht erkennt, sollten keine Informationen zu diesem Eintrag angezeigt werden.

    • Wenn ein anderes Attribut eine Aufzählung von Werten hat und Sie den Wert dieses Attributs nicht erkennen, sollten Sie das Tag ignorieren, in dem das Attribut vorkommt.

  • Ihr Anwendungscode sollte immer eine yt:error-Nachricht erwarten. Falls ein API-Vorgang fehlschlägt, sollte Ihre Anwendung den Fehler identifizieren und dem Nutzer eine aussagekräftige Meldung anzeigen.

  • YouTube kann jederzeit neue Kategorien für die Klassifizierung von Videos hinzufügen. Bestehende Kategorien können auch von YouTube aktualisiert oder eingestellt werden. Du kannst eine aktuelle Kategoriedateiüber http://gdata.youtube.com/schemas/2007/categories.cat abrufen.

    • Wenn Nutzer in Ihrer Anwendung Videos nach Kategorie suchen oder Videos hochladen können, rufen Sie wöchentlich eine aktualisierte Kategoriedatei ab.

    • Wenn Nutzer in Ihrer Anwendung Videos nach Kategorie suchen können, rufen Sie außerdem eine aktualisierte Kategoriedatei ab, wenn die API bei einer Kategoriesuche einen leeren Feed zurückgibt.

    • Wenn Nutzer in Ihrer Anwendung Videos hochladen können, sollten Sie vor dem Hochladen eines Videos auch eine aktualisierte Kategoriedatei abrufen und sich vergewissern, dass die mit dem hochgeladenen Video verknüpfte Kategorie weiterhin zugewiesen werden kann. Weitere Informationen finden Sie im Referenzhandbuch. Hinweis: Wenn Sie versuchen, ein Video einer nicht zuweisbaren Kategorie zuzuweisen, gibt die API eine Fehlermeldung zurück, bei der der Wert des <code>-Tags deprecated lautet.

  • Verwenden Sie die <link>-Tags in einer API-Antwort, um Paginierungslinks für die vorherige und/oder nächste Seite von Einträgen in einem Feed zu identifizieren. Weitere Informationen finden Sie im Referenzleitfaden im Abschnitt Ergebnisse durchblättern.