Snippets de código da API Data

Instruções

A ferramenta interativa de snippets de código permite testar facilmente as solicitações de API e gerar amostras de código específicas para essas solicitações. Para qualquer método, a ferramenta mostra snippets de código para um ou mais casos de uso, e cada caso de uso descreve uma forma comum de chamar esse método. Por exemplo, você pode chamar o método channels.list para recuperar dados sobre um canal específico ou sobre o canal do usuário atual.

Executar solicitações de API

Para executar as solicitações, clique no botão Executar ao lado da lista de parâmetros de solicitação. Caso você não tenha autorizado o aplicativo a enviar solicitações de API em seu nome, será necessário fazer isso. Como precaução adicional, se a solicitação executar uma operação de gravação, como inserção, atualização ou exclusão de recursos associados ao seu canal, você vai precisar confirmar se quer executar a solicitação antes que ela seja feita.

Alternar snippets de código e amostras completas

Para cada caso de uso, a ferramenta mostra um snippet de código que identifica o código específico do método sendo chamado. Cada snippet identifica o método que está sendo chamado, assim como os valores de parâmetro e propriedade usados na solicitação da API.

Além disso, a ferramenta também mostra um exemplo de código completo que coloca esse snippet de código em um modelo que define funções padrão para autorizar solicitações de API e construir solicitações de API. Você pode usar o controle deslizante acima dos exemplos para alternar entre o snippet e o exemplo completo:

Executar amostras de código completo localmente

As amostras de código completas são projetadas para serem copiadas e executadas no local. Observe os seguintes pré-requisitos e as etapas de configuração para executar as amostras de código completas:

Java

Pré-requisitos

  • Java 1.7 ou superior
  • Gradle 2.3 ou versão posterior

Configure seu projeto e execute as amostras de código

  1. Crie um projeto no Console de APIs e configure as credenciais de um aplicativo da Web. Defina os URIs de redirecionamento autorizados, conforme apropriado.

  2. Siga as instruções no Guia de início rápido do Java para a API para preparar o projeto, mas substitua o conteúdo do arquivo build.gradle padrão pelo seguinte código:

    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. No diretório de trabalho, salve o arquivo client_secrets.json associado às suas credenciais em src/main/resources/client_secret.json.

  4. No diretório de trabalho, copie o exemplo de código completo para src/main/java/ApiExample.java. O nome da classe em cada exemplo é ApiExample, então você não precisa modificar o arquivo build.gradle para executar amostras diferentes.

  5. Execute o exemplo na linha de comando:

    gradle -q run
  6. A maioria das amostras imprime algo em STDOUT. Também é possível verificar o site do YouTube para ver os efeitos das solicitações que gravam dados, como as que criam playlists ou seções de canais.

JavaScript
  1. Crie um projeto no Console de APIs e configure as credenciais de um aplicativo da Web. Defina as origens do JavaScript autorizadas para identificar o URL do qual você enviará solicitações (por exemplo, http://localhost).

  2. Copie o exemplo de código completo para um arquivo local acessível ao servidor da Web (por exemplo, /var/www/html/example.html).

  3. Encontre a linha na amostra de código que define o ID do cliente a ser usado para a solicitação e substitua o valor pelo ID do cliente de suas credenciais:

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. Abra o arquivo no seu navegador (por exemplo, http://localhost/example.html). É recomendável usar um navegador com um console de depuração, como o Google Chrome.

  5. Se necessário, autorize a solicitação. Se a solicitação estiver autorizada, o console de depuração vai exibir a resposta da API como um objeto JSON.

Node.js

Pré-requisitos

  • É preciso instalar o Node.js.
  • A ferramenta de gerenciamento de pacotes npm (em inglês). Ela vem com o Node.js.
  • A biblioteca de cliente das APIs do Google para Node.js:
    npm install googleapis --save
  • Acesso à Internet e a um navegador da Web.
  • uma Conta do Google.

Configure seu projeto e execute as amostras de código

  1. Crie um projeto no Console de APIs e configure as credenciais do OAuth 2.0 no Console de APIs do Google. Ao configurar suas credenciais, defina o tipo do aplicativo como Outro.

  2. Salve o arquivo client_secret.json associado às suas credenciais em um arquivo local.

  3. Copie o exemplo de código completo para um arquivo local no mesmo diretório do arquivo client_secret.json ou modifique o exemplo para identificar corretamente o local desse arquivo.

  4. Execute o exemplo na linha de comando:

    node sample.js
  5. A maioria das amostras imprime algo para o STDOUT ou, para exemplos de aplicativo da Web, para a página da Web que você está visualizando. Também é possível verificar o site do YouTube para ver os efeitos das solicitações que gravam dados, como as que criam playlists ou seções de canais.

Python

Pré-requisitos

  • Python 2.6 ou superior
  • A ferramenta de gerenciamento de pacotes PIP
  • A biblioteca de cliente das APIs do Google para Python:
    pip install --upgrade google-api-python-client
  • google-auth, google-auth-oauthlib e google-auth-httplib2 para autorização do usuário.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • a biblioteca de aplicativos da Web Flask Python (se você estiver executando as amostras Python para aplicativos de servidor da Web)
    pip install --upgrade flask
  • A biblioteca HTTP de solicitações.
    pip install --upgrade requests

Configure seu projeto e execute as amostras de código

  1. Crie um projeto no Console de APIs e configure as credenciais do OAuth 2.0 no Console de APIs do Google. Ao configurar suas credenciais, defina o tipo de aplicativo como Aplicativo da Web para amostras que usam o framework de aplicativo da Web Python Flask e também defina URIs de redirecionamento autorizados para essas credenciais. Caso contrário, defina o tipo do aplicativo como Outro.

  2. Salve o arquivo client_secret.json associado às suas credenciais em um arquivo local.

  3. Copie o exemplo de código completo para um arquivo local no mesmo diretório do arquivo client_secret.json ou modifique o exemplo para identificar corretamente o local desse arquivo.

  4. Execute o exemplo na linha de comando:

    python sample.py
    Observação para exemplos de aplicativos do servidor da Web:

    se você está executando os exemplos em Python para aplicativos de servidor da Web, a execução do script inicia um servidor da Web local. Para executar a solicitação de API, acesse a página da Web veiculada em um navegador. Por exemplo, as amostras do Python que usam o framework de aplicativo da Web Flask contêm uma linha como esta:

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

    Esse código inicia um servidor da Web local em http://localhost:8080. No entanto, o script não tenta executar uma solicitação de API até que você navegue até http://localhost:8080 em um navegador. O URL do servidor local também precisa ser definido como um URI de redirecionamento autorizado para suas credenciais de autorização.
  5. A maioria das amostras imprime algo para o STDOUT ou, para exemplos de aplicativo da Web, para a página da Web que você está visualizando. Também é possível verificar o site do YouTube para ver os efeitos das solicitações que gravam dados, como as que criam playlists ou seções de canais.

PHP

Pré-requisitos

  • PHP 5.4 ou superior com a interface de linha de comando (CLI) e a extensão JSON instaladas.
  • A ferramenta de gerenciamento de dependências do Composer.
  • A biblioteca de cliente das APIs do Google para PHP:
    php composer.phar require google/apiclient:^2.0

Configure seu projeto e execute as amostras de código

  1. Crie um projeto no Console de APIs e configure as credenciais do OAuth 2.0 no Console de APIs do Google. Ao configurar suas credenciais, defina o tipo do aplicativo como Outro.

  2. Salve o arquivo client_secret.json associado às suas credenciais em um arquivo local.

  3. Copie o exemplo de código completo para um arquivo local no mesmo diretório do arquivo client_secret.json ou modifique o exemplo para identificar corretamente o local desse arquivo.

  4. Execute o exemplo na linha de comando:

    php sample.php
  5. A maioria das amostras imprime algo para o STDOUT ou, para exemplos de aplicativo da Web, para a página da Web que você está visualizando. Também é possível verificar o site do YouTube para ver os efeitos das solicitações que gravam dados, como as que criam playlists ou seções de canais.

Ruby

Pré-requisitos

  • Ruby 2.0 ou posterior
  • A biblioteca de cliente das APIs do Google para Ruby:
    gem install google-api-client

Configure seu projeto e execute as amostras de código

  1. Crie um projeto no Console de APIs e configure as credenciais do OAuth 2.0 no Console de APIs do Google. Ao configurar suas credenciais, defina o tipo do aplicativo como Outro.

  2. Salve o arquivo client_secret.json associado às suas credenciais em um arquivo local.

  3. Copie o exemplo de código completo para um arquivo local no mesmo diretório do arquivo client_secret.json ou modifique o exemplo para identificar corretamente o local desse arquivo.

  4. Execute o exemplo na linha de comando:

    ruby sample.rb
  5. A maioria das amostras imprime algo para o STDOUT ou, para exemplos de aplicativo da Web, para a página da Web que você está visualizando. Também é possível verificar o site do YouTube para ver os efeitos das solicitações que gravam dados, como as que criam playlists ou seções de canais.

Ir
  1. Crie um projeto no Console de APIs e configure as credenciais do OAuth 2.0 no Console de APIs do Google. Ao configurar suas credenciais, defina o tipo do aplicativo como Outro.

  2. Salve o arquivo client_secret.json associado às suas credenciais em um arquivo local.

  3. Copie o exemplo de código completo para um arquivo local no mesmo diretório do arquivo client_secret.json ou modifique o exemplo para identificar corretamente o local desse arquivo.

  4. Execute o exemplo na linha de comando:

    go run sample.go
  5. A maioria das amostras imprime algo para o STDOUT ou, para exemplos de aplicativo da Web, para a página da Web que você está visualizando. Também é possível verificar o site do YouTube para ver os efeitos das solicitações que gravam dados, como as que criam playlists ou seções de canais.

Usar funções boilerplate

Como mencionado acima, as amostras de código completo usam código boilerplate para autorizar e construir solicitações de API. Por exemplo, a função build_resource em exemplos do Python usa um dicionário que mapeia propriedades de recurso para os valores para criar um recurso que pode ser inserido ou atualizado. Funções semelhantes são fornecidas para JavaScript, PHP, Ruby, Go e Apps Script.

Por exemplo, as guias abaixo mostram como as funções padrão para criação de recursos são chamadas para construir um recurso playlist. Observe que as funções boilerplate não precisam saber que tipo de recurso está sendo criado.

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'
});
Ir
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)

Carregar recursos atuais

Para testar uma solicitação de atualização de um recurso existente, carregue os valores atuais da propriedade desse recurso no formulário de atualização. Por exemplo, para atualizar metadados sobre um vídeo, insira o ID do vídeo no campo da propriedade id e clique no botão Carregar recurso. Os valores das propriedades atuais são carregados no formulário, e você pode atualizar somente os valores que gostaria de mudar.