Фрагменты кода API данных

инструкции

Инструмент интерактивных фрагментов кода позволяет легко тестировать запросы API и создавать образцы кода, специфичные для этих запросов. Для любого заданного метода инструмент показывает фрагменты кода для одного или нескольких вариантов использования, и каждый вариант использования описывает общий способ вызова этого метода. Например, вы можете вызвать метод channels.list для получения данных о конкретном канале или о канале текущего пользователя.

Выполнять запросы API

Вы можете выполнять запросы, нажав кнопку «Выполнить» рядом со списком параметров запроса. Если вы ранее не разрешали приложению отправлять запросы API от вашего имени, вам будет предложено сделать это. В качестве дополнительной меры предосторожности, если ваш запрос выполняет операцию записи — вставку, обновление или удаление ресурсов, связанных с вашим каналом, — вас попросят подтвердить, что вы хотите выполнить запрос, прежде чем он действительно выполнится.

Переключить фрагменты кода и полные примеры

Для каждого варианта использования инструмент показывает фрагмент кода, который идентифицирует код, относящийся к конкретному вызываемому методу. Каждый фрагмент кода идентифицирует вызываемый метод, а также значения параметров и свойств, используемые в запросе API.

Кроме того, инструмент также показывает полный пример кода, который помещает этот фрагмент кода в шаблон, определяющий стандартные функции для авторизации запросов API и создания запросов API. Вы можете использовать ползунок над образцами для переключения между фрагментом и полным образцом:

Запуск полных примеров кода локально

Полные образцы кода предназначены для копирования и локального запуска. Обратите внимание на следующие предварительные условия и шаги настройки для запуска полных примеров кода:

Джава

Предпосылки

  • Java 1.7 или выше
  • Gradle 2.3 или выше

Настройте свой проект и запустите примеры кода

  1. Создайте проект в консоли API и настройте учетные данные для веб-приложения. При необходимости задайте авторизованные URI перенаправления.

  2. Следуйте инструкциям в Кратком руководстве по API Java для подготовки проекта, но замените содержимое файла build.gradle по умолчанию следующим кодом:

    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. В рабочем каталоге сохраните файл client_secrets.json , связанный с вашими учетными данными, в src/main/resources/client_secret.json .

  4. Из своего рабочего каталога скопируйте полный пример кода в src/main/java/ApiExample.java . (Имя класса в каждом примере — ApiExample , поэтому вам не нужно изменять файл build.gradle для запуска разных примеров.)

  5. Запустите образец из командной строки:

    gradle -q run
  6. Большинство образцов выводят что-либо в STDOUT . Вы также можете проверить веб-сайт YouTube, чтобы увидеть влияние запросов на запись данных, таких как запросы на создание плейлистов или разделов каналов.

JavaScript
  1. Создайте проект в консоли API и настройте учетные данные для веб-приложения. Установите авторизованные источники JavaScript, чтобы определить URL-адрес, с которого вы будете отправлять запросы (например http://localhost ).

  2. Скопируйте полный пример кода в локальный файл, доступный для вашего веб-сервера (например /var/www/html/example.html ).

  3. Найдите строку в образце кода, которая задает идентификатор клиента, который будет использоваться для запроса, и замените значение идентификатором клиента для ваших учетных данных:

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. Откройте файл в браузере (например http://localhost/example.html ). Рекомендуется использовать браузер с консолью отладки, например Google Chrome.

  5. При необходимости авторизуйте запрос. Если запрос авторизован, консоль отладки должна отобразить ответ API на запрос в виде объекта JSON.

Node.js

Предпосылки

  • Node.js должен быть установлен.
  • Инструмент управления пакетами npm (поставляется с Node.js).
  • Клиентская библиотека API Google для Node.js:
    npm install googleapis --save
  • Доступ к Интернету и веб-браузер.
  • Аккаунт Google.

Настройте свой проект и запустите примеры кода

  1. Создайте проект в консоли API и настройте учетные данные OAuth 2.0 в консоли Google API . При настройке учетных данных установите тип приложения «Другое» .

  2. Сохраните файл client_secret.json , связанный с вашими учетными данными, в локальный файл.

  3. Скопируйте полный образец кода в локальный файл в том же каталоге, что и файл client_secret.json (или измените образец, чтобы правильно определить расположение этого файла.

  4. Запустите образец из командной строки:

    node sample.js
  5. Большинство примеров печатают что-то в STDOUT или, для примеров веб-приложений, на просматриваемую вами веб-страницу. Вы также можете проверить веб-сайт YouTube, чтобы увидеть влияние запросов на запись данных, таких как запросы на создание плейлистов или разделов каналов.

питон

Предпосылки

  • Python 2.6 или выше
  • Инструмент управления пакетами pip
  • Клиентская библиотека API Google для Python:
    pip install --upgrade google-api-python-client
  • google-auth, google-auth-oauthlib и google-auth-httplib2 для авторизации пользователя.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • Платформа веб-приложений Flask Python (если вы используете образцы Python для приложений веб-сервера).
    pip install --upgrade flask
  • HTTP-библиотека запросов.
    pip install --upgrade requests

Настройте свой проект и запустите примеры кода

  1. Создайте проект в консоли API и настройте учетные данные OAuth 2.0 в консоли Google API . При настройке учетных данных задайте тип приложения «Веб-приложение» для примеров, использующих инфраструктуру веб-приложений Flask Python, а также задайте авторизованные URI перенаправления для этих учетных данных. В противном случае установите тип приложения «Другое» .

  2. Сохраните файл client_secret.json , связанный с вашими учетными данными, в локальный файл.

  3. Скопируйте полный образец кода в локальный файл в том же каталоге, что и файл client_secret.json (или измените образец, чтобы правильно определить расположение этого файла.

  4. Запустите образец из командной строки:

    python sample.py
    Примечание для примеров приложений веб-сервера:

    Если вы запускаете примеры Python для приложений веб-сервера, запуск скрипта запускает локальный веб-сервер. Чтобы фактически выполнить запрос API, вам нужно перейти на обслуживаемую веб-страницу в браузере. Например, образцы Python, использующие фреймворк веб-приложений Flask, содержат такую ​​строку:

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

    Этот код запускает локальный веб-сервер по адресу http://localhost:8080 . Однако сценарий не пытается выполнить запрос API, пока вы фактически не перейдете по адресу http://localhost:8080 в браузере. (URL-адрес вашего локального сервера также должен быть установлен в качестве авторизованного URI перенаправления для ваших учетных данных авторизации.)
  5. Большинство примеров печатают что-то в STDOUT или, для примеров веб-приложений, на просматриваемую вами веб-страницу. Вы также можете проверить веб-сайт YouTube, чтобы увидеть влияние запросов на запись данных, таких как запросы на создание плейлистов или разделов каналов.

PHP

Предпосылки

  • PHP 5.4 или выше с установленным интерфейсом командной строки (CLI) и расширением JSON.
  • Инструмент управления зависимостями Composer .
  • Клиентская библиотека API Google для PHP:
    php composer.phar require google/apiclient:^2.0

Настройте свой проект и запустите примеры кода

  1. Создайте проект в консоли API и настройте учетные данные OAuth 2.0 в консоли Google API . При настройке учетных данных установите тип приложения «Другое» .

  2. Сохраните файл client_secret.json , связанный с вашими учетными данными, в локальный файл.

  3. Скопируйте полный образец кода в локальный файл в том же каталоге, что и файл client_secret.json (или измените образец, чтобы правильно определить расположение этого файла.

  4. Запустите образец из командной строки:

    php sample.php
  5. Большинство примеров печатают что-то в STDOUT или, для примеров веб-приложений, на просматриваемую вами веб-страницу. Вы также можете проверить веб-сайт YouTube, чтобы увидеть влияние запросов на запись данных, таких как запросы на создание плейлистов или разделов каналов.

Рубин

Предпосылки

  • Руби 2.0 или выше
  • Клиентская библиотека API Google для Ruby:
    gem install google-api-client

Настройте свой проект и запустите примеры кода

  1. Создайте проект в консоли API и настройте учетные данные OAuth 2.0 в консоли Google API . При настройке учетных данных установите тип приложения «Другое» .

  2. Сохраните файл client_secret.json , связанный с вашими учетными данными, в локальный файл.

  3. Скопируйте полный образец кода в локальный файл в том же каталоге, что и файл client_secret.json (или измените образец, чтобы правильно определить расположение этого файла.

  4. Запустите образец из командной строки:

    ruby sample.rb
  5. Большинство примеров печатают что-то в STDOUT или, для примеров веб-приложений, на просматриваемую вами веб-страницу. Вы также можете проверить веб-сайт YouTube, чтобы увидеть влияние запросов на запись данных, таких как запросы на создание плейлистов или разделов каналов.

Скрипт приложений
Следуйте инструкциям по включению расширенных служб Google , чтобы активировать функции YouTube.
Идти
  1. Создайте проект в консоли API и настройте учетные данные OAuth 2.0 в консоли Google API . При настройке учетных данных установите тип приложения «Другое» .

  2. Сохраните файл client_secret.json , связанный с вашими учетными данными, в локальный файл.

  3. Скопируйте полный образец кода в локальный файл в том же каталоге, что и файл client_secret.json (или измените образец, чтобы правильно определить расположение этого файла.

  4. Запустите образец из командной строки:

    go run sample.go
  5. Большинство примеров печатают что-то в STDOUT или, для примеров веб-приложений, на просматриваемую вами веб-страницу. Вы также можете проверить веб-сайт YouTube, чтобы увидеть влияние запросов на запись данных, таких как запросы на создание плейлистов или разделов каналов.

Используйте стандартные функции

Как отмечалось выше, в полных примерах кода используется шаблонный код для авторизации и создания запросов API. Например, функция build_resource в примерах Python использует словарь, который сопоставляет свойства ресурсов с их значениями для создания ресурса, который можно вставлять или обновлять. Аналогичные функции предусмотрены для JavaScript, PHP, Ruby, Go и Apps Script.

Например, на вкладках ниже показано, как шаблонные функции для создания ресурсов будут вызываться для создания ресурса playlist . Обратите внимание, что стандартным функциям не нужно знать, какой тип ресурса создается.

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'
}
питон
# 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'));
Рубин
# 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'})
Скрипт приложений
// 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'
});
Идти
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)

Загрузить существующие ресурсы

Чтобы протестировать запрос на обновление существующего ресурса, вы можете загрузить текущие значения свойств для этого ресурса в форму обновления. Например, чтобы обновить метаданные о видео, введите идентификатор видео в поле свойства id и нажмите кнопку Загрузить ресурс . Текущие значения свойств загружаются в форму, и вы можете обновить только те значения, которые хотите изменить.