Snippets de código da API de dados

Instruções

A ferramenta de snippets de código interativos permite testar solicitações de API e gerar exemplos de código específicos 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 maneira comum de chamar esse método. Por exemplo, é possível 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 solicitações, clique no botão Executar ao lado da lista de parâmetros de solicitação. Se você não tiver autorizado o aplicativo a enviar solicitações de API em seu nome, será solicitado que faça isso. Como precaução extra, se a solicitação realizar uma operação de gravação (inserção, atualização ou exclusão de recursos associados ao seu canal), será necessário confirmar que você quer executar a solicitação antes que ela seja executada.

Alternar snippets de código e exemplos completos

Para cada caso de uso, a ferramenta mostra um snippet de código que identifica o código específico do método que está sendo chamado. Cada snippet identifica o método que está sendo chamado, bem como os valores de parâmetro e propriedade usados na solicitação de 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 de boilerplate para autorizar e construir solicitações de API. Use o controle deslizante acima dos exemplos para alternar entre o snippet e o exemplo completo:

Executar exemplos de código completos localmente

Os exemplos de código completos são projetados para serem copiados e executados localmente. Confira os pré-requisitos e as etapas de configuração a seguir para executar os exemplos de código completos:

Java

Pré-requisitos

  • Java 1.7 ou mais recente
  • Gradle 2.3 ou mais recente

Configurar o projeto e executar exemplos de código

  1. Crie um projeto no console do Cloud e configure as credenciais de um aplicativo da Web. Defina os URIs de redirecionamento autorizados conforme necessário.

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

    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, para que você não precise modificar o arquivo build.gradle para executar exemplos diferentes.

  5. Execute o exemplo na linha de comando:

    gradle -q run
  6. A maioria dos exemplos imprime algo em STDOUT. Você também pode conferir o site do YouTube para ver os efeitos de solicitações que gravam dados, como solicitações que criam playlists ou seções de canais.

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

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

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

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

  5. Autorize a solicitação, se necessário. Se a solicitação for autorizada, o console de depuração vai mostrar a resposta da API à solicitação como um objeto JSON.

Node.js

Pré-requisitos

  • O Node.js precisa estar instalado.
  • A ferramenta de gerenciamento de pacotes npm (fornecida 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.

Configurar o projeto e executar exemplos de código

  1. Crie um projeto no console do Cloud e configure as credenciais do OAuth 2.0 no console do Google Cloud. Ao configurar as credenciais, defina o tipo de 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 do arquivo.

  4. Execute o exemplo na linha de comando:

    node sample.js
  5. A maioria dos exemplos imprime algo em STDOUT ou, para exemplos de aplicativos da Web, na página da Web que você está visualizando. Você também pode conferir o site do YouTube para ver os efeitos de solicitações que gravam dados, como solicitações que criam playlists ou seções de canais.

Python

Pré-requisitos

  • Python 2.6 ou mais recente
  • A ferramenta de gerenciamento de pacotes pip
  • A biblioteca de cliente das APIs do Google para Python:
    pip install --upgrade google-api-python-client
  • O 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
  • O framework de aplicativo da Web Python Flask (se você estiver executando os exemplos do Python para aplicativos de servidor da Web).
    pip install --upgrade flask
  • A biblioteca HTTP de solicitações.
    pip install --upgrade requests

Configurar o projeto e executar exemplos de código

  1. Crie um projeto no console do Cloud e configure as credenciais do OAuth 2.0 no console do Google Cloud. Ao configurar as credenciais, defina o tipo de aplicativo como Aplicativo da Web para exemplos 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 de 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 do arquivo.

  4. Execute o exemplo na linha de comando:

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

    Se você estiver executando os exemplos do Python para aplicativos de servidor da Web, a execução do script vai iniciar um servidor da Web local. Para executar a solicitação de API, acesse a página da Web veiculada em um navegador. Por exemplo, os exemplos 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 dos exemplos imprime algo em STDOUT ou, para exemplos de aplicativos da Web, na página da Web que você está visualizando. Você também pode conferir o site do YouTube para ver os efeitos de solicitações que gravam dados, como solicitações que criam playlists ou seções de canais.

PHP

Pré-requisitos

  • PHP 5.4 ou mais recente com a interface de linha de comando (CLI) e a extensão JSON instalada.
  • 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

Configurar o projeto e executar exemplos de código

  1. Crie um projeto no console do Cloud e configure as credenciais do OAuth 2.0 no console do Google Cloud. Ao configurar as credenciais, defina o tipo de 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 do arquivo.

  4. Execute o exemplo na linha de comando:

    php sample.php
  5. A maioria dos exemplos imprime algo em STDOUT ou, para exemplos de aplicativos da Web, na página da Web que você está visualizando. Você também pode conferir o site do YouTube para ver os efeitos de solicitações que gravam dados, como solicitações que criam playlists ou seções de canais.

Ruby

Pré-requisitos

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

Configurar o projeto e executar exemplos de código

  1. Crie um projeto no console do Cloud e configure as credenciais do OAuth 2.0 no console do Google Cloud. Ao configurar as credenciais, defina o tipo de 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 do arquivo.

  4. Execute o exemplo na linha de comando:

    ruby sample.rb
  5. A maioria dos exemplos imprime algo em STDOUT ou, para exemplos de aplicativos da Web, na página da Web que você está visualizando. Você também pode conferir o site do YouTube para ver os efeitos de solicitações que gravam dados, como solicitações que criam playlists ou seções de canais.

Go
  1. Crie um projeto no console do Cloud e configure as credenciais do OAuth 2.0 no console do Google Cloud. Ao configurar as credenciais, defina o tipo de 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 do arquivo.

  4. Execute o exemplo na linha de comando:

    go run sample.go
  5. A maioria dos exemplos imprime algo em STDOUT ou, para exemplos de aplicativos da Web, na página da Web que você está visualizando. Você também pode conferir o site do YouTube para ver os efeitos de solicitações que gravam dados, como solicitações que criam playlists ou seções de canais.

Usar funções de boilerplate

Como observado acima, os exemplos de código completos 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 as propriedades de recursos para os valores deles a fim de construir 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 de boilerplate para criar recursos seriam chamadas para construir um recurso playlist. As funções de 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'
});
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)

Carregar recursos atuais

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