Snippets de código da API de dados

Instruções

A ferramenta de snippets de código interativos permite que você teste facilmente as solicitações de API e gere 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, 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

É possível executar solicitações clicando no botão Executar ao lado da lista de parâmetros de solicitação. Se você não autorizou anteriormente o aplicativo a enviar solicitações de API em seu nome, terá que fazer isso. Como precaução extra, se a solicitação executar uma operação de gravação – inserindo, atualizando ou excluindo recursos associados ao seu canal – você será solicitado a confirmar se deseja executar a solicitação antes que ela seja realmente executada.

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 para o método específico que está sendo chamado. Cada snippet identifica o método chamado, bem 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 insere esse snippet de código em um modelo que define funções boilerplate para autorizar solicitações de API e criar solicitações de API. Use o controle deslizante acima das amostras para alternar entre o snippet e a amostra completa:

Executar amostras de código completas localmente

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

Java

Pré-requisitos

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

Configurar seu projeto e executar exemplos de código

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

  2. Siga as instruções do 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 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 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 das amostras mostra algo em STDOUT. Você também pode conferir o site do YouTube para saber os efeitos das solicitações que gravam dados, como as solicitações que criam playlists ou as seções do canal.

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

  2. Copie o exemplo completo de código 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 para a 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). É recomendável 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 estiver autorizada, o console de depuração deverá exibir 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 (vem com Node.js);
  • Biblioteca cliente de APIs do Google para Node.js:
    npm install googleapis --save
  • Acesso à Internet e a um navegador da Web.
  • uma Conta do Google.

Configurar seu projeto e executar exemplos 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 Outro.

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

  3. Copie o exemplo completo de código 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 mostra 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 saber os efeitos das solicitações que gravam dados, como as solicitações que criam playlists ou as seções do canal.

.
Python

Pré-requisitos

  • Python 2.6 ou superior
  • Ferramenta de gerenciamento de pacotes pip
  • A biblioteca cliente de 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
  • o framework de aplicativo da Web em Python Flask (se você estiver executando amostras de Python para aplicativos de servidor da Web);
    pip install --upgrade flask
  • A biblioteca HTTP solicita.
    pip install --upgrade requests

Configurar seu projeto e executar exemplos 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 aplicativos da Web em Python Flask e também configure 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 completo de código 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 de servidor da Web:

    Se você estiver executando os exemplos em Python para aplicativos de servidor da Web, a execução do script iniciará um servidor da Web local. Para executar a solicitação de API, você precisa acessar a página da Web exibida em um navegador. Por exemplo, os exemplos de 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 de seu servidor local também deve ser definido como um URI de redirecionamento autorizado para suas credenciais de autorização.
  5. A maioria das amostras mostra 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 saber os efeitos das solicitações que gravam dados, como as solicitações que criam playlists ou as seções do canal.

.
PHP

Pré-requisitos

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

Configurar seu projeto e executar exemplos 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 Outro.

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

  3. Copie o exemplo completo de código 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 mostra 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 saber os efeitos das solicitações que gravam dados, como as solicitações que criam playlists ou as seções do canal.

.
Ruby

Pré-requisitos

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

Configurar seu projeto e executar exemplos 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 Outro.

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

  3. Copie o exemplo completo de código 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 mostra 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 saber os efeitos das solicitações que gravam dados, como as solicitações que criam playlists ou as seções do canal.

.
.
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 de aplicativo como Outro.

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

  3. Copie o exemplo completo de código 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 mostra 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 saber os efeitos das solicitações que gravam dados, como as solicitações que criam playlists ou as seções do canal.

Usar funções boilerplate

Conforme mencionado acima, os exemplos de código completos usam código boilerplate para autorização e criação de solicitações de API. Por exemplo, a função build_resource em exemplos de Python usa um dicionário que mapeia as propriedades de recurso com os respectivos valores para criar um recurso que pode ser inserido ou atualizado. Há funções semelhantes para JavaScript, PHP, Ruby, Go e Apps Script.

Por exemplo, as guias abaixo mostram como as funções boilerplate para criação de recursos são chamadas para construir um recurso playlist. 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'})
Google 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, 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 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 somente os valores que gostaria de alterar.