Fragmenty kodu interfejsu Data API

Instrukcje

Narzędzie interaktywnych fragmentów kodu umożliwia łatwe testowanie żądań do interfejsu API i generowanie przykładów kodu specyficznych dla tych żądań. W przypadku każdej metody narzędzie wyświetla fragmenty kodu dla co najmniej 1 przypadku użycia, a każdy z nich opisuje typowy sposób wywoływania tej metody. Możesz na przykład wywołać metodę channels.list, aby pobrać dane o konkretnym kanale lub o kanale bieżącego użytkownika.

Wykonywanie żądań do interfejsu API

Żądania możesz wykonywać, klikając przycisk Wykonaj obok listy parametrów żądania. Jeśli wcześniej nie autoryzowano aplikacji do przesyłania żądań do interfejsu API w Twoim imieniu, pojawi się prośba o autoryzację. Dodatkowo, jeśli żądanie wykonuje operację zapisu – wstawianie, aktualizowanie lub usuwanie zasobów powiązanych z Twoim kanałem – przed jego wykonaniem pojawi się prośba o potwierdzenie, że chcesz je wykonać.

Przełączanie między fragmentami kodu a pełnymi przykładami

W przypadku każdego przypadku użycia narzędzie wyświetla fragment kodu, który identyfikuje kod specyficzny dla wywoływanej metody. Każdy fragment identyfikuje wywoływaną metodę oraz wartości parametrów i właściwości używane w żądaniu do interfejsu API.

Narzędzie wyświetla też pełny przykładowy kod, który umieszcza ten fragment kodu w szablonie definiującym funkcje standardowe do autoryzowania i tworzenia żądań do interfejsu API. Aby przełączać się między fragmentem a pełnym przykładem, użyj suwaka nad przykładami:

Uruchamianie pełnych przykładów kodu lokalnie

Pełne przykłady kodu można kopiować i uruchamiać lokalnie. Aby uruchomić pełne przykłady kodu, musisz spełnić te wymagania wstępne i wykonać te czynności:

Java

Wymagania wstępne

  • Java 1.7 lub nowsza
  • Gradle 2.3 lub nowsza

Konfigurowanie projektu i uruchamianie przykładów kodu

  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania do aplikacji internetowej. Ustaw odpowiednie autoryzowane identyfikatory URI przekierowania.

  2. Aby przygotować projekt, postępuj zgodnie z instrukcjami w przewodniku Szybki start interfejsu API Java, ale zastąp zawartość domyślnego pliku build.gradle tym kodem:

    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. W katalogu roboczym zapisz plik client_secrets.json powiązany z Twoimi danymi logowania w src/main/resources/client_secret.json.

  4. W katalogu roboczym skopiuj pełny przykład kodu do src/main/java/ApiExample.java. (Nazwa klasy w każdym przykładzie to ApiExample, więc nie musisz modyfikować pliku build.gradle, aby uruchamiać różne przykłady).

  5. Uruchom przykład z wiersza poleceń:

    gradle -q run
  6. Większość przykładów wyświetla coś w STDOUT. Możesz też sprawdzić witrynę YouTube, aby zobaczyć efekty żądań, które zapisują dane, np. żądań tworzących playlisty lub sekcje kanału.

JavaScript
  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania do aplikacji internetowej. Ustaw autoryzowane źródła JavaScript, aby określić adres URL, z którego będziesz wysyłać żądania (np. http://localhost).

  2. Skopiuj pełny przykład kodu do pliku lokalnego dostępnego dla serwera WWW (np. /var/www/html/example.html).

  3. W przykładzie kodu znajdź wiersz, który ustawia identyfikator klienta używany w żądaniu, i zastąp wartość identyfikatorem klienta dla swoich danych logowania:

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. Otwórz plik w przeglądarce (np. http://localhost/example.html). Zalecamy używanie przeglądarki z konsolą debugowania, takiej jak Google Chrome.

  5. W razie potrzeby autoryzuj żądanie. Jeśli żądanie jest autoryzowane, w konsoli debugowania powinna się wyświetlić odpowiedź interfejsu API na żądanie w postaci obiektu JSON.

Node.js

Wymagania wstępne

  • Musisz mieć zainstalowany Node.js.
  • Narzędzie do zarządzania pakietami npm (jest dostępne w Node.js).
  • Biblioteka klienta interfejsów API Google dla Node.js:
    npm install googleapis --save
  • Dostęp do internetu i przeglądarki.
  • Konto Google.

Konfigurowanie projektu i uruchamianie przykładów kodu

  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania OAuth 2.0 w konsoli Google Cloud. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.

  2. Zapisz plik client_secret.json powiązany z Twoimi danymi logowania w pliku lokalnym.

  3. Skopiuj pełny przykład kodu do pliku lokalnego w tym samym katalogu co plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo identyfikował lokalizację tego pliku).

  4. Uruchom przykład z wiersza poleceń:

    node sample.js
  5. Większość przykładów wyświetla coś w STDOUT lub, w przypadku przykładów aplikacji internetowych, na wyświetlanej stronie internetowej. Możesz też sprawdzić witrynę YouTube, aby zobaczyć efekty żądań, które zapisują dane, np. żądań tworzących playlisty lub sekcje kanału.

Python

Wymagania wstępne

  • Python 2.6 lub nowszy
  • Narzędzie do zarządzania pakietami pip
  • Biblioteka klienta interfejsów API Google dla języka Python:
    pip install --upgrade google-api-python-client
  • Biblioteki google-auth, google-auth-oauthlib i google-auth-httplib2 do autoryzacji użytkownika.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • Platforma do tworzenia aplikacji internetowych Flask Python (jeśli uruchamiasz przykłady Pythona dla aplikacji serwera WWW).
    pip install --upgrade flask
  • Biblioteka HTTP requests.
    pip install --upgrade requests

Konfigurowanie projektu i uruchamianie przykładów kodu

  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania OAuth 2.0 w konsoli Google Cloud. Podczas konfigurowania danych logowania ustaw typ aplikacji na Aplikacja internetowa w przypadku przykładów, które używają platformy do tworzenia aplikacji internetowych Flask Python, i ustaw autoryzowane identyfikatory URI przekierowania dla tych danych logowania. W przeciwnym razie ustaw typ aplikacji na Inne.

  2. Zapisz plik client_secret.json powiązany z Twoimi danymi logowania w pliku lokalnym.

  3. Skopiuj pełny przykład kodu do pliku lokalnego w tym samym katalogu co plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo identyfikował lokalizację tego pliku).

  4. Uruchom przykład z wiersza poleceń:

    python sample.py
    Uwaga dotycząca przykładów aplikacji serwera WWW:

    Jeśli uruchamiasz przykłady Pythona dla aplikacji serwera WWW, uruchomienie skryptu spowoduje uruchomienie lokalnego serwera WWW. Aby faktycznie wykonać żądanie do interfejsu API, musisz otworzyć w przeglądarce wyświetlaną stronę internetową. Na przykład przykłady Pythona, które używają platformy do tworzenia aplikacji internetowych Flask, zawierają wiersz podobny do tego:

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

    Ten kod uruchamia lokalny serwer WWW pod adresem http://localhost:8080. Skrypt nie próbuje jednak wykonać żądania do interfejsu API, dopóki nie przejdziesz do adresu http://localhost:8080 w przeglądarce. (Adres URL serwera lokalnego musi być też ustawiony jako autoryzowany identyfikator URI przekierowania dla danych logowania autoryzacji).
  5. Większość przykładów wyświetla coś w STDOUT lub, w przypadku przykładów aplikacji internetowych, na wyświetlanej stronie internetowej. Możesz też sprawdzić witrynę YouTube, aby zobaczyć efekty żądań, które zapisują dane, np. żądań tworzących playlisty lub sekcje kanału.

PHP

Wymagania wstępne

  • PHP 5.4 lub nowsza z zainstalowanym interfejsem wiersza poleceń (CLI) i rozszerzeniem JSON.
  • Narzędzie do zarządzania zależnościami Composer.
  • Biblioteka klienta interfejsów API Google dla języka PHP:
    php composer.phar require google/apiclient:^2.0

Konfigurowanie projektu i uruchamianie przykładów kodu

  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania OAuth 2.0 w konsoli Google Cloud. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.

  2. Zapisz plik client_secret.json powiązany z Twoimi danymi logowania w pliku lokalnym.

  3. Skopiuj pełny przykład kodu do pliku lokalnego w tym samym katalogu co plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo identyfikował lokalizację tego pliku).

  4. Uruchom przykład z wiersza poleceń:

    php sample.php
  5. Większość przykładów wyświetla coś w STDOUT lub, w przypadku przykładów aplikacji internetowych, na wyświetlanej stronie internetowej. Możesz też sprawdzić witrynę YouTube, aby zobaczyć efekty żądań, które zapisują dane, np. żądań tworzących playlisty lub sekcje kanału.

Ruby

Wymagania wstępne

  • Ruby 2.0 lub nowsza
  • Biblioteka klienta interfejsów API Google dla języka Ruby:
    gem install google-api-client

Konfigurowanie projektu i uruchamianie przykładów kodu

  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania OAuth 2.0 w konsoli Google Cloud. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.

  2. Zapisz plik client_secret.json powiązany z Twoimi danymi logowania w pliku lokalnym.

  3. Skopiuj pełny przykład kodu do pliku lokalnego w tym samym katalogu co plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo identyfikował lokalizację tego pliku).

  4. Uruchom przykład z wiersza poleceń:

    ruby sample.rb
  5. Większość przykładów wyświetla coś w STDOUT lub, w przypadku przykładów aplikacji internetowych, na wyświetlanej stronie internetowej. Możesz też sprawdzić witrynę YouTube, aby zobaczyć efekty żądań, które zapisują dane, np. żądań tworzących playlisty lub sekcje kanału.

Go
  1. Utwórz projekt w konsoli Cloud i skonfiguruj dane logowania OAuth 2.0 w konsoli Google Cloud. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.

  2. Zapisz plik client_secret.json powiązany z Twoimi danymi logowania w pliku lokalnym.

  3. Skopiuj pełny przykład kodu do pliku lokalnego w tym samym katalogu co plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo identyfikował lokalizację tego pliku).

  4. Uruchom przykład z wiersza poleceń:

    go run sample.go
  5. Większość przykładów wyświetla coś w STDOUT lub, w przypadku przykładów aplikacji internetowych, na wyświetlanej stronie internetowej. Możesz też sprawdzić witrynę YouTube, aby zobaczyć efekty żądań, które zapisują dane, np. żądań tworzących playlisty lub sekcje kanału.

Korzystanie z funkcji standardowych

Jak wspomnieliśmy powyżej, pełne przykłady kodu używają powtarzalnego kodu do autoryzowania i tworzenia żądań do interfejsu API. Na przykład funkcja build_resource w przykładach Pythona używa słownika, który mapuje właściwości zasobu na ich wartości, aby utworzyć zasób, który można wstawić lub zaktualizować. Podobne funkcje są dostępne w językach JavaScript, PHP, Ruby, Go i Apps Script.

Na przykład karty poniżej pokazują, jak wywołać funkcje standardowe do tworzenia zasobów, aby utworzyć zasób playlist. Pamiętaj, że funkcje standardowe nie muszą wiedzieć, jaki typ zasobu jest tworzony.

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)

Wczytywanie istniejących zasobów

Aby przetestować żądanie aktualizacji istniejącego zasobu, możesz wczytać bieżące wartości właściwości tego zasobu do formularza aktualizacji. Aby na przykład zaktualizować metadane filmu, wpisz identyfikator filmu w polu właściwości id i kliknij przycisk Wczytaj zasób. Bieżące wartości właściwości zostaną wczytane do formularza i możesz zaktualizować tylko te wartości, które chcesz zmienić.