Fragmenty kodu interfejsu Data API

Instrukcje

Narzędzie do interaktywnych fragmentów kodu pozwala łatwo testować żądania do interfejsu API i generować próbki kodu dla tych żądań. W każdej z nich narzędzie wyświetla fragmenty kodu w przypadku co najmniej 1 przypadku użycia. Przypadki użycia opisują każdy typ tej metody. Możesz na przykład wywołać metodę channels.list, by pobrać dane o konkretnym kanale lub kanale bieżącego użytkownika.

Wykonywanie żądań do interfejsu API

Żądania możesz wykonywać, klikając przycisk Wykonaj obok listy parametrów żądań. Jeśli aplikacja nie została wcześniej przez Ciebie upoważniona do przesyłania w Twoim imieniu żądań do interfejsu API, pojawi się prośba o wykonanie tej prośby. Gdy będzie wymagane wykonanie operacji zapisu (wstawienie, zaktualizowanie lub usunięcie zasobów powiązanych z kanałem), pojawi się prośba o potwierdzenie, że chcesz wykonać żądanie przed wykonaniem żądania.

Przełącz fragmenty kodu i pełne przykłady

W każdym przypadku użycia narzędzie wyświetla fragment kodu, który identyfikuje kod przypisany do określonej metody. Każdy fragment kodu zawiera wywołanie wywoływanej metody oraz wartości parametrów i właściwości używane w żądaniu do interfejsu API.

Narzędzie pokazuje też pełny fragment kodu, który umieszcza ten fragment w szablonie definiującym podstawowe funkcje służące do autoryzowania i tworzenia żądań do interfejsu API. Za pomocą suwaka nad przykładami możesz przełączać się między fragmentem a całą próbką:

Lokalne uruchamianie pełnych przykładów kodu

Pełne przykłady kodu zostały skopiowane i uruchomione lokalnie. Pamiętaj o tych wymaganiach wstępnych i skonfiguruj etapy uruchamiania pełnych przykładów kodu:

Java

Wymagania wstępne

  • Java 1.7 lub nowsza
  • Gradle w wersji 2.3 lub nowszej

Konfigurowanie projektu i uruchamianie przykładowego kodu

  1. Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania dla aplikacji internetowej. Ustaw odpowiednie identyfikatory URI przekierowania.

  2. Aby przygotować projekt, wykonaj instrukcje podane w Krótkim przewodniku po języku Java API, 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 usłudze src/main/resources/client_secret.json.

  4. Skopiuj cały przykładowy kod z katalogu roboczego do src/main/java/ApiExample.java. Nazwa klasy w każdej próbce to ApiExample, więc nie musisz modyfikować pliku build.gradle w celu uruchomienia różnych próbek.

  5. Uruchom przykład z poziomu wiersza poleceń:

    gradle -q run
  6. Większość próbek drukuje coś na: STDOUT. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.

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

  2. Skopiuj pełny przykładowy kod do pliku lokalnego dostępnego dla Twojego serwera internetowego (np. /var/www/html/example.html).

  3. Znajdź w przykładowym kodzie wiersz, który wskazuje identyfikator klienta, który będzie używany w żądaniu, i zastąp tę wartość identyfikatorem klienta swoich danych logowania:

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

  5. W razie potrzeby autoryzuj żądanie. Jeśli żądanie jest autoryzowane, konsola debugowania powinna wyświetlić odpowiedź interfejsu API na żądanie jako obiekt JSON.

Node.js

Wymagania wstępne

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

Konfigurowanie projektu i uruchamianie przykładowego kodu

  1. Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. 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ładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku).

  4. Uruchom przykład z poziomu wiersza poleceń:

    node sample.js
  5. Większość próbek drukuje coś przez STDOUT lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.

Python

Wymagania wstępne

  • Python w wersji 2.6 lub nowszej
  • Narzędzie do zarządzania pakietami pip
  • Biblioteka klienta interfejsów API Google dla języka Python:
    pip install --upgrade google-api-python-client
  • google-auth, google-auth-oauthlib i google-auth-httplib2 w celu autoryzacji użytkowników;
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • platformy aplikacji internetowej Flask w Pythonie (jeśli używasz przykładów Pythona do aplikacji serwera WWW).
    pip install --upgrade flask
  • Biblioteka żądań HTTP.
    pip install --upgrade requests

Konfigurowanie projektu i uruchamianie przykładowego kodu

  1. Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. Podczas konfigurowania danych logowania ustaw typ aplikacji na Aplikacja internetowa dla przykładów, które używają platformy aplikacji internetowej Flask Python, a także ustaw autoryzowane identyfikatory URI przekierowania dla tych danych logowania. W innym przypadku 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ładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku).

  4. Uruchom przykład z poziomu wiersza poleceń:

    python sample.py
    Uwaga dla przykładowych aplikacji serwera WWW:

    Jeśli uruchamiasz próbki w języku Python dla aplikacji serwera WWW, uruchomienie skryptu uruchomi lokalny serwer WWW. Aby wykonać żądanie do interfejsu API, musisz otworzyć wyświetloną stronę w przeglądarce. Na przykład przykłady w Pythonie, które korzystają z platformy aplikacji internetowej Flask, zawierają wiersz:

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

    Ten kod rozpoczyna lokalny serwer WWW pod adresem http://localhost:8080. Skrypt nie próbuje jednak wykonać żądania do interfejsu API, dopóki nie otworzysz w przeglądarce strony http://localhost:8080. (URL serwera lokalnego musi być też ustawiony jako autoryzowany identyfikator URI przekierowania danych uwierzytelniających).
  5. Większość próbek drukuje coś przez STDOUT lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.

PHP

Wymagania wstępne

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

Konfigurowanie projektu i uruchamianie przykładowego kodu

  1. Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. 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ładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku).

  4. Uruchom przykład z poziomu wiersza poleceń:

    php sample.php
  5. Większość próbek drukuje coś przez STDOUT lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji 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ładowego kodu

  1. Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. 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ładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku).

  4. Uruchom przykład z poziomu wiersza poleceń:

    ruby sample.rb
  5. Większość próbek drukuje coś przez STDOUT lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.

Przejdź
  1. Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. 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ładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik client_secret.json (lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku).

  4. Uruchom przykład z poziomu wiersza poleceń:

    go run sample.go
  5. Większość próbek drukuje coś przez STDOUT lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.

Użyj stałych szablonów

Jak wspomniano powyżej, pełne fragmenty kodu wykorzystują powtarzalny kod do autoryzacji i tworzenia żądań do interfejsu API. Na przykład funkcja build_resource w przykładach w Pythonie wykorzystuje słownik, który mapuje właściwości zasobów 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 na poniższych kartach widać, jak funkcje schematyczne dotyczące tworzenia zasobów będą wywoływane w celu utworzenia zasobu playlist. Pamiętaj, że schematyczne funkcje 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'
});
OK
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)

Wczytaj istniejące zasoby

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 jego identyfikator w polu właściwości id i kliknij przycisk Wczytaj zasób. Aktualne wartości właściwości zostaną wczytane do formularza. Możesz zaktualizować tylko te wartości, które chcesz zmienić.