Extraits de code de l'API Data

Instructions

L'outil d'extraits de code interactifs vous permet de tester facilement les requêtes API et de générer des exemples de code spécifiques à ces requêtes. Pour une méthode donnée, l'outil affiche des extraits de code pour un ou plusieurs cas d'utilisation, et chaque cas d'utilisation décrit une manière courante d'appeler cette méthode. Par exemple, vous pouvez appeler la méthode channels.list pour récupérer des données sur une chaîne spécifique ou sur la chaîne de l'utilisateur actuel.

Exécuter des requêtes API

Vous pouvez exécuter des requêtes en cliquant sur le bouton Exécuter à côté de la liste des paramètres de requête. Si vous n'avez pas encore autorisé l'application à envoyer des requêtes API en votre nom, vous serez invité à le faire. Par mesure de précaution supplémentaire, si votre requête effectue une opération d'écriture (insertion, mise à jour ou suppression de ressources associées à votre chaîne), vous serez invité à confirmer que vous souhaitez exécuter la requête avant qu'elle ne soit réellement exécutée.

Basculer entre les extraits de code et les exemples complets

Pour chaque cas d'utilisation, l'outil affiche un extrait de code qui identifie le code spécifique à la méthode particulière appelée. Chaque extrait identifie la méthode appelée, ainsi que les valeurs des paramètres et des propriétés utilisées dans la requête API.

De plus, l'outil affiche également un exemple de code complet qui place cet extrait de code dans un modèle qui définit des fonctions standards pour autoriser les requêtes API et les construire. Vous pouvez utiliser le curseur au-dessus des exemples pour basculer entre l'extrait et l'exemple complet :

Exécuter des exemples de code complet en local

Les exemples de code complet sont conçus pour être copiés et exécutés en local. Veuillez noter les conditions préalables et les étapes de configuration suivantes pour exécuter les exemples de code complet :

Java

Conditions préalables

  • Java 1.7 ou version ultérieure
  • Gradle 2.3 ou version ultérieure

Configurer votre projet et exécuter des exemples de code

  1. Créez un projet dans la console Cloud et configurez des identifiants pour une application Web. Définissez les URI de redirection autorisés de manière appropriée.

  2. Suivez les instructions du guide de démarrage rapide de l'API Java pour préparer votre projet, mais remplacez le contenu du fichier build.gradle par défaut par le code suivant :

    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. Dans votre répertoire de travail, enregistrez le fichier client_secrets.json associé à vos identifiants dans src/main/resources/client_secret.json.

  4. Dans votre répertoire de travail, copiez l'exemple de code complet dans src/main/java/ApiExample.java. (Le nom de classe de chaque exemple est ApiExample, de sorte que vous n'avez pas besoin de modifier le fichier build.gradle pour exécuter différents exemples.)

  5. Exécutez l'exemple à partir de la ligne de commande :

    gradle -q run
  6. La plupart des exemples affichent quelque chose dans STDOUT. Vous pouvez également consulter le site Web YouTube pour voir les effets des requêtes qui écrivent des données, telles que les requêtes qui créent des playlists ou des sections de chaîne.

JavaScript
  1. Créez un projet dans la console Cloud et configurez des identifiants pour une application Web. Définissez les origines JavaScript autorisées pour identifier l'URL à partir de laquelle vous enverrez des requêtes (par exemple, http://localhost).

  2. Copiez l'exemple de code complet dans un fichier local accessible à votre serveur Web (par exemple, /var/www/html/example.html).

  3. Recherchez la ligne de l'exemple de code qui définit l'ID client à utiliser pour la requête, puis remplacez la valeur par l'ID client de vos identifiants :

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. Ouvrez le fichier dans votre navigateur (par exemple, http://localhost/example.html). Il est recommandé d'utiliser un navigateur avec une console de débogage, tel que Google Chrome.

  5. Autorisez la requête si nécessaire. Si la requête est autorisée, la console de débogage doit afficher la réponse de l'API à la requête sous la forme d'un objet JSON.

Node.js

Conditions préalables

  • Node.js doit être installé.
  • L'outil de gestion des packages npm (fourni avec Node.js).
  • La bibliothèque cliente des API Google pour Node.js :
    npm install googleapis --save
  • Accès à Internet et à un navigateur Web.
  • Un compte Google.

Configurer votre projet et exécuter des exemples de code

  1. Créez un projet dans la console Cloud et configurez des identifiants OAuth 2.0 dans la console Google Cloud. Lorsque vous configurez vos identifiants, définissez le type d'application sur Autre.

  2. Enregistrez le fichier client_secret.json associé à vos identifiants dans un fichier local.

  3. Copiez l'exemple de code complet dans un fichier local situé dans le même répertoire que le fichier client_secret.json (ou modifiez l'exemple pour identifier correctement l'emplacement de ce fichier).

  4. Exécutez l'exemple à partir de la ligne de commande :

    node sample.js
  5. La plupart des exemples affichent quelque chose dans STDOUT ou, pour les exemples d'applications Web, dans la page Web que vous consultez. Vous pouvez également consulter le site Web YouTube pour voir les effets des requêtes qui écrivent des données, telles que les requêtes qui créent des playlists ou des sections de chaîne.

Python

Conditions préalables

  • Python 2.6 ou version ultérieure
  • L'outil de gestion des packages pip
  • La bibliothèque cliente des API Google pour Python :
    pip install --upgrade google-api-python-client
  • google-auth, google-auth-oauthlib et google-auth-httplib2 pour l'autorisation des utilisateurs.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • Le framework d'application Web Python Flask (si vous exécutez les exemples Python pour les applications de serveur Web).
    pip install --upgrade flask
  • La bibliothèque HTTP requests.
    pip install --upgrade requests

Configurer votre projet et exécuter des exemples de code

  1. Créez un projet dans la console Cloud et configurez des identifiants OAuth 2.0 dans la console Google Cloud. Lorsque vous configurez vos identifiants, définissez le type d'application sur Application Web pour les exemples qui utilisent le framework d'application Web Python Flask, et définissez également les URI de redirection autorisés pour ces identifiants. Sinon, définissez le type d'application sur Autre.

  2. Enregistrez le fichier client_secret.json associé à vos identifiants dans un fichier local.

  3. Copiez l'exemple de code complet dans un fichier local situé dans le même répertoire que le fichier client_secret.json (ou modifiez l'exemple pour identifier correctement l'emplacement de ce fichier).

  4. Exécutez l'exemple à partir de la ligne de commande :

    python sample.py
    Remarque concernant les exemples d'applications de serveur Web :

    Si vous exécutez les exemples Python pour les applications de serveur Web, l'exécution du script démarre un serveur Web local. Pour exécuter réellement la requête API, vous devez accéder à la page Web diffusée dans un navigateur. Par exemple, les exemples Python qui utilisent le framework d'application Web Flask contiennent une ligne comme celle-ci :

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

    Ce code démarre un serveur Web local sur http://localhost:8080. Toutefois, le script n'essaie pas d'exécuter une requête API tant que vous n'accédez pas à http://localhost:8080 dans un navigateur. (L'URL de votre serveur local doit également être définie comme URI de redirection autorisé pour vos identifiants d'autorisation.)
  5. La plupart des exemples affichent quelque chose dans STDOUT ou, pour les exemples d'applications Web, dans la page Web que vous consultez. Vous pouvez également consulter le site Web YouTube pour voir les effets des requêtes qui écrivent des données, telles que les requêtes qui créent des playlists ou des sections de chaîne.

PHP

Conditions préalables

  • PHP 5.4 ou version ultérieure avec l'interface de ligne de commande (CLI) et l'extension JSON installées.
  • L'outil de gestion des dépendances Composer.
  • La bibliothèque cliente des API Google pour PHP :
    php composer.phar require google/apiclient:^2.0

Configurer votre projet et exécuter des exemples de code

  1. Créez un projet dans la console Cloud et configurez des identifiants OAuth 2.0 dans la console Google Cloud. Lorsque vous configurez vos identifiants, définissez le type d'application sur Autre.

  2. Enregistrez le fichier client_secret.json associé à vos identifiants dans un fichier local.

  3. Copiez l'exemple de code complet dans un fichier local situé dans le même répertoire que le fichier client_secret.json (ou modifiez l'exemple pour identifier correctement l'emplacement de ce fichier).

  4. Exécutez l'exemple à partir de la ligne de commande :

    php sample.php
  5. La plupart des exemples affichent quelque chose dans STDOUT ou, pour les exemples d'applications Web, dans la page Web que vous consultez. Vous pouvez également consulter le site Web YouTube pour voir les effets des requêtes qui écrivent des données, telles que les requêtes qui créent des playlists ou des sections de chaîne.

Ruby

Conditions préalables

  • Ruby 2.0 ou version ultérieure
  • La bibliothèque cliente des API Google pour Ruby :
    gem install google-api-client

Configurer votre projet et exécuter des exemples de code

  1. Créez un projet dans la console Cloud et configurez des identifiants OAuth 2.0 dans la console Google Cloud. Lorsque vous configurez vos identifiants, définissez le type d'application sur Autre.

  2. Enregistrez le fichier client_secret.json associé à vos identifiants dans un fichier local.

  3. Copiez l'exemple de code complet dans un fichier local situé dans le même répertoire que le fichier client_secret.json (ou modifiez l'exemple pour identifier correctement l'emplacement de ce fichier).

  4. Exécutez l'exemple à partir de la ligne de commande :

    ruby sample.rb
  5. La plupart des exemples affichent quelque chose dans STDOUT ou, pour les exemples d'applications Web, dans la page Web que vous consultez. Vous pouvez également consulter le site Web YouTube pour voir les effets des requêtes qui écrivent des données, telles que les requêtes qui créent des playlists ou des sections de chaîne.

Apps Script
Suivez les instructions pour activer les services Google avancés afin d'activer les fonctionnalités YouTube.
Go
  1. Créez un projet dans la console Cloud et configurez des identifiants OAuth 2.0 dans la console Google Cloud. Lorsque vous configurez vos identifiants, définissez le type d'application sur Autre.

  2. Enregistrez le fichier client_secret.json associé à vos identifiants dans un fichier local.

  3. Copiez l'exemple de code complet dans un fichier local situé dans le même répertoire que le fichier client_secret.json (ou modifiez l'exemple pour identifier correctement l'emplacement de ce fichier).

  4. Exécutez l'exemple à partir de la ligne de commande :

    go run sample.go
  5. La plupart des exemples affichent quelque chose dans STDOUT ou, pour les exemples d'applications Web, dans la page Web que vous consultez. Vous pouvez également consulter le site Web YouTube pour voir les effets des requêtes qui écrivent des données, telles que les requêtes qui créent des playlists ou des sections de chaîne.

Utiliser des fonctions standards

Comme indiqué ci-dessus, les exemples de code complet utilisent du code récurrent pour autoriser et construire des requêtes API. Par exemple, la fonction build_resource dans les exemples Python utilise un dictionnaire qui mappe les propriétés de la ressource à leurs valeurs pour construire une ressource qui peut être insérée ou mise à jour. Des fonctions similaires sont fournies pour JavaScript, PHP, Ruby, Go et Apps Script.

Par exemple, les onglets ci-dessous montrent comment les fonctions standards de création de ressources seraient appelées pour construire une ressource playlist. Notez que les fonctions standards n'ont pas besoin de savoir quel type de ressource est créé.

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)

Charger des ressources existantes

Pour tester une requête de mise à jour d'une ressource existante, vous pouvez charger les valeurs de propriété actuelles de cette ressource dans le formulaire de mise à jour. Par exemple, pour mettre à jour les métadonnées d'une vidéo, saisissez l'ID vidéo dans le champ de propriété id, puis cliquez sur le bouton Charger la ressource. Les valeurs de propriété actuelles sont chargées dans le formulaire, et vous pouvez mettre à jour uniquement les valeurs que vous souhaitez modifier.