Code-Snippets für die Daten-API

Anleitung

Mit dem Tool für interaktive Code-Snippets können Sie API-Anfragen ganz einfach testen und Codebeispiele speziell für diese Anfragen generieren. Für jede Methode zeigt das Tool Code-Snippets für einen oder mehrere Anwendungsfälle. Jeder Anwendungsfall beschreibt eine gängige Methode zum Aufrufen dieser Methode. Sie können beispielsweise die Methode channels.list aufrufen, um Daten zu einem bestimmten Kanal oder zum Kanal des aktuellen Nutzers abzurufen.

API-Anfragen ausführen

Sie können Anfragen ausführen, indem Sie neben der Liste der Anfrageparameter auf die Schaltfläche Ausführen klicken. Wenn Sie die Anwendung noch nicht autorisiert haben, API-Anfragen in Ihrem Namen zu senden, werden Sie dazu aufgefordert. Als zusätzliche Vorsichtsmaßnahme werden Sie bei Anfragen, die einen Schreibvorgang ausführen – also Ressourcen im Zusammenhang mit Ihrem Kanal einfügen, aktualisieren oder löschen – aufgefordert, die Ausführung der Anfrage zu bestätigen, bevor sie tatsächlich ausgeführt wird.

Zwischen Code-Snippets und vollständigen Beispielen wechseln

Für jeden Anwendungsfall zeigt das Tool ein Code-Snippet, das Code speziell für die aufgerufene Methode enthält. In jedem Snippet werden die aufgerufene Methode sowie die Parameter- und Attributwerte angegeben, die in der API-Anfrage verwendet werden.

Außerdem zeigt das Tool ein vollständiges Codebeispiel, in dem das Code-Snippet in eine Vorlage eingefügt ist, die Boilerplate-Funktionen für die Autorisierung und Erstellung von API-Anfragen definiert. Mit dem Schieberegler über den Beispielen können Sie zwischen dem Snippet und dem vollständigen Beispiel wechseln:

Vollständige Codebeispiele lokal ausführen

Die vollständigen Codebeispiele sind so konzipiert, dass sie kopiert und lokal ausgeführt werden können. Beachten Sie die folgenden Voraussetzungen und Schritte zur Einrichtung, um die vollständigen Codebeispiele auszuführen:

Java

Voraussetzungen

  • Java 1.7 oder höher
  • Gradle 2.3 oder höher

Projekt einrichten und Codebeispiele ausführen

  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie Anmeldedaten für eine Webanwendung ein. Legen Sie die autorisierten Weiterleitungs-URIs entsprechend fest.

  2. Folgen Sie der Anleitung im Java-Schnellstartleitfaden für die API, um Ihr Projekt vorzubereiten. Ersetzen Sie jedoch den Inhalt der Standarddatei build.gradle durch den folgenden Code:

    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'ApiExample'
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.google.api-client:google-api-client:1.22.0'
        compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0'
        compile 'com.google.apis:google-api-services-youtube:v3-rev182-1.22.0'
        compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.4'
    }
    
    compileJava {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
  3. Speichern Sie die Datei client_secrets.json aus Ihrem Arbeitsverzeichnis, die mit Ihren Anmeldedaten verknüpft ist, unter src/main/resources/client_secret.json.

  4. Kopieren Sie das vollständige Codebeispiel aus Ihrem Arbeitsverzeichnis nach src/main/java/ApiExample.java. Der Klassenname ist in jedem Beispiel ApiExample, sodass Sie die Datei build.gradle nicht ändern müssen, um verschiedene Beispiele auszuführen.

  5. Führen Sie das Beispiel über die Befehlszeile aus:

    gradle -q run
  6. Die meisten Beispiele geben etwas in STDOUT aus. Sie können auch auf der YouTube-Website nachsehen, welche Auswirkungen Anfragen haben, die Daten schreiben, z. B. Anfragen zum Erstellen von Playlists oder Kanalabschnitten.

JavaScript
  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie Anmeldedaten für eine Webanwendung ein. Legen Sie die autorisierten JavaScript-Quellen fest, um die URL anzugeben, von der aus Sie Anfragen senden (z.B. http://localhost).

  2. Kopieren Sie das vollständige Codebeispiel in eine lokale Datei, auf die Ihr Webserver zugreifen kann (z.B. /var/www/html/example.html).

  3. Suchen Sie im Codebeispiel die Zeile, in der die Client-ID für die Anfrage festgelegt wird, und ersetzen Sie den Wert durch die Client-ID für Ihre Anmeldedaten:

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. Öffnen Sie die Datei in Ihrem Browser (z. B. http://localhost/example.html). Wir empfehlen, einen Browser mit einer Debugging-Konsole zu verwenden, z. B. Google Chrome.

  5. Autorisieren Sie die Anfrage bei Bedarf. Wenn die Anfrage autorisiert ist, sollte in der Debugging-Konsole die API-Antwort auf die Anfrage als JSON-Objekt angezeigt werden.

Node.js

Voraussetzungen

  • Node.js muss installiert sein.
  • Das Paketverwaltungstool npm (im Lieferumfang von Node.js enthalten).
  • Die Google APIs-Clientbibliothek für Node.js:
    npm install googleapis --save
  • Zugriff auf das Internet und einen Webbrowser.
  • Ein Google-Konto.

Projekt einrichten und Codebeispiele ausführen

  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie OAuth 2.0-Anmeldedaten in der Google Cloud Console ein. Legen Sie beim Einrichten der Anmeldedaten den Anwendungstyp auf Sonstiges fest.

  2. Speichern Sie die Datei client_secret.json, die mit Ihren Anmeldedaten verknüpft ist, in einer lokalen Datei.

  3. Kopieren Sie das vollständige Codebeispiel in eine lokale Datei im selben Verzeichnis wie die Datei client_secret.json. Alternativ können Sie das Beispiel so ändern, dass der Speicherort dieser Datei korrekt angegeben wird.

  4. Führen Sie das Beispiel über die Befehlszeile aus:

    node sample.js
  5. Die meisten Beispiele geben etwas in STDOUT aus. Bei Webanwendungsbeispielen wird die Ausgabe auf der angezeigten Webseite angezeigt. Sie können auch auf der YouTube-Website nachsehen, welche Auswirkungen Anfragen haben, die Daten schreiben, z. B. Anfragen zum Erstellen von Playlists oder Kanalabschnitten.

Python

Voraussetzungen

  • Python 2.6 oder höher
  • Das Paketverwaltungstool pip
  • Die Google APIs-Clientbibliothek für Python:
    pip install --upgrade google-api-python-client
  • Die Bibliotheken google-auth, google-auth-oauthlib und google-auth-httplib2 für die Nutzerautorisierung.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • Das Python-Webanwendungs-Framework Flask (wenn Sie die Python-Beispiele für Webserveranwendungen ausführen).
    pip install --upgrade flask
  • Die HTTP-Bibliothek „requests“.
    pip install --upgrade requests

Projekt einrichten und Codebeispiele ausführen

  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie OAuth 2.0-Anmeldedaten in der Google Cloud Console ein. Legen Sie beim Einrichten der Anmeldedaten den Anwendungstyp für Beispiele, die das Python-Webanwendungs-Framework Flask verwenden, auf Webanwendung fest und legen Sie für diese Anmeldedaten auch autorisierte Weiterleitungs-URIs fest. Legen Sie den Anwendungstyp andernfalls auf Sonstiges fest.

  2. Speichern Sie die Datei client_secret.json, die mit Ihren Anmeldedaten verknüpft ist, in einer lokalen Datei.

  3. Kopieren Sie das vollständige Codebeispiel in eine lokale Datei im selben Verzeichnis wie die Datei client_secret.json. Alternativ können Sie das Beispiel so ändern, dass der Speicherort dieser Datei korrekt angegeben wird.

  4. Führen Sie das Beispiel über die Befehlszeile aus:

    python sample.py
    Hinweis für Webserveranwendungsbeispiele:

    Wenn Sie die Python-Beispiele für Webserveranwendungen ausführen, wird durch das Ausführen des Skripts ein lokaler Webserver gestartet. Um die API-Anfrage tatsächlich auszuführen, müssen Sie die bereitgestellte Webseite in einem Browser aufrufen. Die Python-Beispiele, die das Webanwendungs-Framework Flask verwenden, enthalten beispielsweise eine Zeile wie diese:

    app.run('localhost', 8080, debug=True)

    Dieser Code startet einen lokalen Webserver unter http://localhost:8080. Das Skript versucht jedoch erst dann, eine API-Anfrage auszuführen, wenn Sie in einem Browser zu http://localhost:8080 navigieren. Die URL für Ihren lokalen Server muss auch als autorisierter Weiterleitungs-URI für Ihre Autorisierungsanmeldedaten festgelegt werden.
  5. Die meisten Beispiele geben etwas in STDOUT aus. Bei Webanwendungsbeispielen wird die Ausgabe auf der angezeigten Webseite angezeigt. Sie können auch auf der YouTube-Website nachsehen, welche Auswirkungen Anfragen haben, die Daten schreiben, z. B. Anfragen zum Erstellen von Playlists oder Kanalabschnitten.

PHP

Voraussetzungen

  • PHP 5.4 oder höher mit installierter Befehlszeilenschnittstelle (Command Line Interface, CLI) und JSON-Erweiterung.
  • Das Abhängigkeitsverwaltungstool Composer.
  • Die Google APIs-Clientbibliothek für PHP:
    php composer.phar require google/apiclient:^2.0

Projekt einrichten und Codebeispiele ausführen

  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie OAuth 2.0-Anmeldedaten in der Google Cloud Console ein. Legen Sie beim Einrichten der Anmeldedaten den Anwendungstyp auf Sonstiges fest.

  2. Speichern Sie die Datei client_secret.json, die mit Ihren Anmeldedaten verknüpft ist, in einer lokalen Datei.

  3. Kopieren Sie das vollständige Codebeispiel in eine lokale Datei im selben Verzeichnis wie die Datei client_secret.json. Alternativ können Sie das Beispiel so ändern, dass der Speicherort dieser Datei korrekt angegeben wird.

  4. Führen Sie das Beispiel über die Befehlszeile aus:

    php sample.php
  5. Die meisten Beispiele geben etwas in STDOUT aus. Bei Webanwendungsbeispielen wird die Ausgabe auf der angezeigten Webseite angezeigt. Sie können auch auf der YouTube-Website nachsehen, welche Auswirkungen Anfragen haben, die Daten schreiben, z. B. Anfragen zum Erstellen von Playlists oder Kanalabschnitten.

Ruby

Voraussetzungen

  • Ruby 2.0 oder höher
  • Die Google APIs-Clientbibliothek für Ruby:
    gem install google-api-client

Projekt einrichten und Codebeispiele ausführen

  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie OAuth 2.0-Anmeldedaten in der Google Cloud Console ein. Legen Sie beim Einrichten der Anmeldedaten den Anwendungstyp auf Sonstiges fest.

  2. Speichern Sie die Datei client_secret.json, die mit Ihren Anmeldedaten verknüpft ist, in einer lokalen Datei.

  3. Kopieren Sie das vollständige Codebeispiel in eine lokale Datei im selben Verzeichnis wie die Datei client_secret.json. Alternativ können Sie das Beispiel so ändern, dass der Speicherort dieser Datei korrekt angegeben wird.

  4. Führen Sie das Beispiel über die Befehlszeile aus:

    ruby sample.rb
  5. Die meisten Beispiele geben etwas in STDOUT aus. Bei Webanwendungsbeispielen wird die Ausgabe auf der angezeigten Webseite angezeigt. Sie können auch auf der YouTube-Website nachsehen, welche Auswirkungen Anfragen haben, die Daten schreiben, z. B. Anfragen zum Erstellen von Playlists oder Kanalabschnitten.

Go
  1. Erstellen Sie ein Projekt in der Cloud Console und richten Sie OAuth 2.0-Anmeldedaten in der Google Cloud Console ein. Legen Sie beim Einrichten der Anmeldedaten den Anwendungstyp auf Sonstiges fest.

  2. Speichern Sie die Datei client_secret.json, die mit Ihren Anmeldedaten verknüpft ist, in einer lokalen Datei.

  3. Kopieren Sie das vollständige Codebeispiel in eine lokale Datei im selben Verzeichnis wie die Datei client_secret.json. Alternativ können Sie das Beispiel so ändern, dass der Speicherort dieser Datei korrekt angegeben wird.

  4. Führen Sie das Beispiel über die Befehlszeile aus:

    go run sample.go
  5. Die meisten Beispiele geben etwas in STDOUT aus. Bei Webanwendungsbeispielen wird die Ausgabe auf der angezeigten Webseite angezeigt. Sie können auch auf der YouTube-Website nachsehen, welche Auswirkungen Anfragen haben, die Daten schreiben, z. B. Anfragen zum Erstellen von Playlists oder Kanalabschnitten.

Boilerplate-Funktionen verwenden

Wie oben erwähnt, verwenden vollständige Codebeispiele Boilerplate-Code für die Autorisierung und Erstellung von API-Anfragen. Die Funktion build_resource in Python-Beispielen verwendet beispielsweise ein Dictionary, das Ressourcenattribute ihren Werten zuordnet, um eine Ressource zu erstellen, die eingefügt oder aktualisiert werden kann. Ähnliche Funktionen sind für JavaScript, PHP, Ruby, Go und Apps Script verfügbar.

Die Tabs unten zeigen beispielsweise, wie die Boilerplate-Funktionen zum Erstellen von Ressourcen aufgerufen werden, um eine playlist-Ressource zu erstellen. Die Boilerplate-Funktionen müssen nicht wissen, welcher Ressourcentyp erstellt wird.

JavaScript
function createResource(properties) {
  var resource = {};
  var normalizedProps = properties;
  for (var p in properties) {
    var value = properties[p];
    if (p && p.substr(-2, 2) == '[]') {
      var adjustedName = p.replace('[]', '');
      if (value) {
        normalizedProps[adjustedName] = value.split(',');
      }
      delete normalizedProps[p];
    }
  }
  for (var p in normalizedProps) {
    // Leave properties that don't have values out of inserted resource.
    if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) {
      var propArray = p.split('.');
      var ref = resource;
      for (var pa = 0; pa < propArray.length; pa++) {
        var key = propArray[pa];
        if (pa == propArray.length - 1) {
          ref[key] = normalizedProps[p];
        } else {
          ref = ref[key] = ref[key] || {};
        }
      }
    };
  }
  return resource;
}
var resource = createResource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'JavaScript code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'
}
Python
# Build a resource based on a list of properties given as key-value pairs.
# Leave properties with empty values out of the inserted resource.
def build_resource(properties):
  resource = {}
  for p in properties:
    # Given a key like "snippet.title", split into "snippet" and "title", where
    # "snippet" will be an object and "title" will be a property in that object.
    prop_array = p.split('.')
    ref = resource
    for pa in range(0, len(prop_array)):
      is_array = False
      key = prop_array[pa]
      # Convert a name like "snippet.tags[]" to snippet.tags, but handle
      # the value as an array.
      if key[-2:] == '[]':
        key = key[0:len(key)-2:]
        is_array = True
      if pa == (len(prop_array) - 1):
        # Leave properties without values out of inserted resource.
        if properties[p]:
          if is_array:
            ref[key] = properties[p].split(',')
          else:
            ref[key] = properties[p]
      elif key not in ref:
        # For example, the property is "snippet.title", but the resource does
        # not yet have a "snippet" object. Create the snippet object here.
        # Setting "ref = ref[key]" means that in the next time through the
        # "for pa in range ..." loop, we will be setting a property in the
        # resource's "snippet" object.
        ref[key] = {}
        ref = ref[key]
      else:
        # For example, the property is "snippet.description", and the resource
        # already has a "snippet" object.
        ref = ref[key]
  return resource

resource = build_resource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Python code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'}
  
PHP
// Add a property to the resource.
function addPropertyToResource(&$ref, $property, $value) {
    $keys = explode(".", $property);
    $is_array = false;
    foreach ($keys as $key) {
        // Convert a name like "snippet.tags[]" to "snippet.tags" and
        // set a boolean variable to handle the value like an array.
        if (substr($key, -2) == "[]") {
            $key = substr($key, 0, -2);
            $is_array = true;
        }
        $ref = &$ref[$key];
    }

    // Set the property value. Make sure array values are handled properly.
    if ($is_array && $value) {
        $ref = $value;
        $ref = explode(",", $value);
    } elseif ($is_array) {
        $ref = array();
    } else {
        $ref = $value;
    }
}

// Build a resource based on a list of properties given as key-value pairs.
function createResource($properties) {
    $resource = array();
    foreach ($properties as $prop => $value) {
        if ($value) {
            addPropertyToResource($resource, $prop, $value);
        }
    }
    return $resource;
}

$propertyObject = createResource(array(
    'snippet.title' => 'Sample playlist ',
    'snippet.description' => 'This is a sample playlist description.',
    'snippet.tags[]' => 'Python code, interactive',
    'snippet.defaultLanguage' => '',
    'status.privacyStatus' => 'private'));
Ruby
# Build a resource based on a list of properties given as key-value pairs.
def create_resource(properties)
  resource = {}
  properties.each do |prop, value|
    ref = resource
    prop_array = prop.to_s.split(".")
    for p in 0..(prop_array.size - 1)
      is_array = false
      key = prop_array[p]
      if key[-2,2] == "[]"
        key = key[0...-2]
        is_array = true
      end
      if p == (prop_array.size - 1)
        if is_array
          if value == ""
            ref[key.to_sym] = []
          else
            ref[key.to_sym] = value.split(",")
          end
        elsif value != ""
          ref[key.to_sym] = value
        end
      elsif ref.include?(key.to_sym)
        ref = ref[key.to_sym]
      else
        ref[key.to_sym] = {}
        ref = ref[key.to_sym]
      end
    end
  end
  return resource
end

resource = create_resource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Ruby code, interactive',
    'snippet.default_language': '',
    'status.privacy_status': 'private'})
Apps Script
// Build an object from an object containing properties as key-value pairs
function createResource(properties) {
  var res = {};
  var normalizedProps = {};
  for (var p in properties) {
    var value = properties[p];
    if (p.substr(-2, 2) == '[]' && value) {
      var adjustedName = p.replace('[]', '');
      normalizedProps[adjustedName] = value.split(',');
    } else {
      normalizedProps[p] = value;
    }
  }
  for (var p in normalizedProps) {
    if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) {
      var propArray = p.split('.');
      var ref = res;
      for (var pa = 0; pa < propArray.length; pa++) {
        var key = propArray[pa];
        if (pa == propArray.length - 1) {
          ref[key] = normalizedProps[p];
        } else {
          ref = ref[key] = ref[key] || {};
        }
      }
    };
  }
  return res;
}

var resource = createResource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Apps Script code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'
});
Go
func addPropertyToResource(ref map[string]interface{}, keys []string, value string, count int) map[string]interface{} {
        for k := count; k < (len(keys) - 1); k++ {
                switch val := ref[keys[k]].(type) {
                case map[string]interface{}:
                        ref[keys[k]] = addPropertyToResource(val, keys, value, (k + 1))
                case nil:
                        next := make(map[string]interface{})
                        ref[keys[k]] = addPropertyToResource(next, keys, value, (k + 1))
                }
        }
        // Only include properties that have values.
        if (count == len(keys) - 1 && value != "") {
                valueKey := keys[len(keys)-1]
                if valueKey[len(valueKey)-2:] == "[]" {
                        ref[valueKey[0:len(valueKey)-2]] = strings.Split(value, ",")
                } else if len(valueKey) > 4 && valueKey[len(valueKey)-4:] == "|int" {
                        ref[valueKey[0:len(valueKey)-4]], _ = strconv.Atoi(value)
                } else if value == "true" {
                        ref[valueKey] = true
                } else if value == "false" {
                        ref[valueKey] = false
                } else {
                        ref[valueKey] = value
                }
        }
        return ref
}

func createResource(properties map[string]string) string {
        resource := make(map[string]interface{})
        for key, value := range properties {
                keys := strings.Split(key, ".")
                ref := addPropertyToResource(resource, keys, value, 0)
                resource = ref
        }
        propJson, err := json.Marshal(resource)
        if err != nil {
               log.Fatal("cannot encode to JSON ", err)
        }
        return string(propJson)
}

func main() {
        properties := (map[string]string{
                 "snippet.title": "Sample playlist ",
                 "snippet.description": "This is a sample playlist description.",
                 "snippet.tags[]": "Go code, interactive",
                 "snippet.defaultLanguage": "",
                 "status.privacyStatus": "private",
        })
        res := createResource(properties)

Vorhandene Ressourcen laden

Wenn Sie eine Anfrage zum Aktualisieren einer vorhandenen Ressource testen möchten, können Sie die aktuellen Attributwerte für diese Ressource in das Aktualisierungsformular laden. Wenn Sie beispielsweise Metadaten zu einem Video aktualisieren möchten, geben Sie die Video-ID in das Feld für das Attribut id ein und klicken Sie auf die Schaltfläche Ressource laden. Die aktuellen Attributwerte werden in das Formular geladen und Sie können nur die Werte aktualisieren, die Sie ändern möchten.