Veri API'sı Kod Snippet'leri

Talimatlar

Etkileşimli kod snippet'i aracı, API isteklerini kolayca test etmenize ve bu isteklere özel kod örnekleri oluşturmanıza olanak tanır. Belirli bir yöntem için araç, bir veya daha fazla kullanım alanı için kod snippet'leri gösterir ve her kullanım alanı, söz konusu yöntemi çağırmanın yaygın bir yöntemini açıklar. Örneğin, belirli bir kanal veya geçerli kullanıcının kanalı hakkındaki verileri almak için channels.list yöntemini çağırabilirsiniz.

API istekleri yürütme

İstek parametreleri listesinin yanındaki Yürüt düğmesini tıklayarak istekleri yürütebilirsiniz. Daha önce uygulamayı sizin adınıza API istekleri göndermesi için yetkilendirmediyseniz, bunu yapmanız istenir. Ek bir önlem olarak isteğiniz, kanalınızla ilişkilendirilmiş kaynakları ekleme, güncelleme veya silme gibi bir yazma işlemi gerçekleştirirse fiilen yürütülmeden önce isteği yürütmek istediğinizi onaylamanız istenir.

Kod snippet'lerini ve tam örnekleri aç/kapat

Her bir kullanım durumu için araç, çağrılan yönteme özgü kodu tanımlayan bir kod snippet'i gösterir. Her snippet, çağrılan yöntemin yanı sıra API isteğinde kullanılan parametre ve özellik değerlerini de tanımlar.

Ayrıca araç, API isteklerini yetkilendirmek ve API istekleri oluşturmak için bu kod snippet'ini, ortak metin işlevlerini tanımlayan bir şablona yerleştiren tam bir kod örneği de gösterir. Snippet ve tam örnek arasında geçiş yapmak için örneklerin üzerindeki kaydırma çubuğunu kullanabilirsiniz:

Tam kod örneklerini yerel olarak çalıştırma

Tam kod örnekleri kopyalanıp yerel olarak çalıştırılmak üzere tasarlanmıştır. Tam kod örneklerini çalıştırmak için aşağıdaki ön koşulları ve kurulum adımlarını lütfen unutmayın:

Java

Ön koşullar

  • Java 1.7 veya üstü
  • Gradle 2.3 veya üzeri

Projenizi oluşturma ve kod örnekleri çalıştırma

  1. API Konsolu'nda proje oluşturun ve bir web uygulaması için kimlik bilgilerini ayarlayın. Yetkili yönlendirme URI'lerini uygun şekilde ayarlayın.

  2. Projenizi hazırlamak için API Java Hızlı Başlangıç Kılavuzu'ndaki talimatları izleyin ancak varsayılan build.gradle dosyasının içeriğini aşağıdaki kodla değiştirin:

    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. Çalışma dizininizde, kimlik bilgilerinizle ilişkili client_secrets.json dosyasını src/main/resources/client_secret.json hedefine kaydedin.

  4. Çalışma dizininizden, kod örneğinin tamamını src/main/java/ApiExample.java klasörüne kopyalayın. (Her örnekte sınıf adı ApiExample olduğundan farklı örnekler çalıştırmak için build.gradle dosyasını değiştirmeniz gerekmez.)

  5. Örneği komut satırından çalıştırın:

    gradle -q run
  6. Çoğu örnekte bir şey STDOUT yazıcısına yazdırılır. Oynatma listesi veya kanal bölümü oluşturma istekleri gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesine de göz atabilirsiniz.

ziyaret edin.
'nı inceleyin.
JavaScript
  1. API Konsolu'nda proje oluşturun ve bir web uygulaması için kimlik bilgilerini ayarlayın. İstek göndereceğiniz URL'yi tanımlamak için yetkili JavaScript kaynaklarını ayarlayın (ör. http://localhost).

  2. Tam kod örneğini, web sunucunuz tarafından erişilebilen bir yerel dosyaya (ör. /var/www/html/example.html) kopyalayın.

  3. Kod örneğinde, istek için kullanılacak istemci kimliğini belirleyen satırı bulun ve değeri kimlik bilgilerinizin istemci kimliğiyle değiştirin:

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. Dosyayı tarayıcınızda açın (ör. http://localhost/example.html). Google Chrome gibi hata ayıklama konsoluna sahip bir tarayıcı kullanmanız önerilir.

  5. Gerekirse isteği yetkilendirin. İstek yetkilendirilmişse hata ayıklama konsolu, isteğe verilen API yanıtını bir JSON nesnesi olarak göstermelidir.

ziyaret edin.
'nı inceleyin.
Node.js

Ön koşullar

  • Node.js yüklenmelidir.
  • npm paket yönetim aracı (Node.js ile birlikte gelir).
  • Node.js için Google API'leri İstemci Kitaplığı:
    npm install googleapis --save
  • İnternete ve web tarayıcısına erişim.
  • Google Hesabı.

Projenizi oluşturma ve kod örnekleri çalıştırma

  1. API Konsolu'nda bir proje oluşturun ve Google API Konsolu'nda OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Other olarak ayarlayın.

  2. Kimlik bilgilerinizle ilişkilendirilen client_secret.json dosyasını yerel bir dosyaya kaydedin.

  3. Kod örneğinin tamamını client_secret.json dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya bu dosyanın konumunu doğru şekilde tanımlamak için örneği değiştirin.)

  4. Örneği komut satırından çalıştırın:

    node sample.js
  5. Çoğu örnekte bir şeyler STDOUT konumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına yazdırılır. Oynatma listesi veya kanal bölümü oluşturma istekleri gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesine de göz atabilirsiniz.

ziyaret edin.
'nı inceleyin.
Python

Ön koşullar

  • Python 2.6 veya sonraki sürümler
  • Pip paket yönetim aracı
  • Python için Google API'leri İstemci Kitaplığı:
    pip install --upgrade google-api-python-client
  • Kullanıcı yetkilendirmesi için google-auth, google-auth-oauthlib ve google-auth-httplib2.
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • Flask Python web uygulama çerçevesi (web sunucusu uygulamaları için Python örneklerini çalıştırıyorsanız).
    pip install --upgrade flask
  • İstek HTTP kitaplığı.
    pip install --upgrade requests

Projenizi oluşturma ve kod örnekleri çalıştırma

  1. API Konsolu'nda bir proje oluşturun ve Google API Konsolu'nda OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken, Flask Python web uygulama çerçevesini kullanan örnekler için uygulama türünü Web uygulaması olarak ayarlayın ve bu kimlik bilgileri için yetkili yönlendirme URI'leri ayarlayın. Aksi takdirde, uygulama türünü Diğer olarak ayarlayın.

  2. Kimlik bilgilerinizle ilişkilendirilen client_secret.json dosyasını yerel bir dosyaya kaydedin.

  3. Kod örneğinin tamamını client_secret.json dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya bu dosyanın konumunu doğru şekilde tanımlamak için örneği değiştirin.)

  4. Örneği komut satırından çalıştırın:

    python sample.py
    Web sunucusu uygulama örnekleri için not:

    Web sunucusu uygulamaları için Python örneklerini çalıştırıyorsanız komut dosyasını çalıştırdığınızda bir yerel web sunucusu başlatılır. API isteğini fiilen yürütmek için bir tarayıcıda sunulan web sayfasına gitmeniz gerekir. Örneğin, Flask web uygulama çerçevesini kullanan Python örnekleri şuna benzer bir satır içerir:

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

    Bu kod, http://localhost:8080 adresinde bir yerel web sunucusu başlatır. Ancak, tarayıcıda http://localhost:8080 adresine gerçekten gidene kadar komut dosyası, bir API isteğini yürütmeye çalışmaz. (Yerel sunucunuzun URL'si, yetkilendirme kimlik bilgileriniz için yetkili bir yönlendirme URI'si olarak da ayarlanmalıdır.)
  5. Çoğu örnekte bir şeyler STDOUT konumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına yazdırılır. Oynatma listesi veya kanal bölümü oluşturma istekleri gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesine de göz atabilirsiniz.

ziyaret edin.
'nı inceleyin.
PHP

Ön koşullar

  • Komut satırı arayüzü (KSA) ve JSON uzantısı yüklü olarak PHP 5.4 veya sonraki sürümler.
  • Composer bağımlılık yönetimi aracı.
  • PHP için Google API'leri İstemci Kitaplığı:
    php composer.phar require google/apiclient:^2.0

Projenizi oluşturma ve kod örnekleri çalıştırma

  1. API Konsolu'nda bir proje oluşturun ve Google API Konsolu'nda OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Other olarak ayarlayın.

  2. Kimlik bilgilerinizle ilişkilendirilen client_secret.json dosyasını yerel bir dosyaya kaydedin.

  3. Kod örneğinin tamamını client_secret.json dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya bu dosyanın konumunu doğru şekilde tanımlamak için örneği değiştirin.)

  4. Örneği komut satırından çalıştırın:

    php sample.php
  5. Çoğu örnekte bir şeyler STDOUT konumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına yazdırılır. Oynatma listesi veya kanal bölümü oluşturma istekleri gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesine de göz atabilirsiniz.

ziyaret edin.
'nı inceleyin.
Ruby

Ön koşullar

  • Ruby 2.0 veya sonraki sürümler
  • Ruby için Google API'leri İstemci Kitaplığı:
    gem install google-api-client

Projenizi oluşturma ve kod örnekleri çalıştırma

  1. API Konsolu'nda bir proje oluşturun ve Google API Konsolu'nda OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Other olarak ayarlayın.

  2. Kimlik bilgilerinizle ilişkilendirilen client_secret.json dosyasını yerel bir dosyaya kaydedin.

  3. Kod örneğinin tamamını client_secret.json dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya bu dosyanın konumunu doğru şekilde tanımlamak için örneği değiştirin.)

  4. Örneği komut satırından çalıştırın:

    ruby sample.rb
  5. Çoğu örnekte bir şeyler STDOUT konumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına yazdırılır. Oynatma listesi veya kanal bölümü oluşturma istekleri gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesine de göz atabilirsiniz.

ziyaret edin.
'nı inceleyin.
Apps Komut Dosyası
ziyaret edin. YouTube özelliklerini etkinleştirmek için gelişmiş Google hizmetlerini etkinleştirme talimatlarını uygulayın.
ziyaret edin.
Git
  1. API Konsolu'nda bir proje oluşturun ve Google API Konsolu'nda OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Other olarak ayarlayın.

  2. Kimlik bilgilerinizle ilişkilendirilen client_secret.json dosyasını yerel bir dosyaya kaydedin.

  3. Kod örneğinin tamamını client_secret.json dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya bu dosyanın konumunu doğru şekilde tanımlamak için örneği değiştirin.)

  4. Örneği komut satırından çalıştırın:

    go run sample.go
  5. Çoğu örnekte bir şeyler STDOUT konumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına yazdırılır. Oynatma listesi veya kanal bölümü oluşturma istekleri gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesine de göz atabilirsiniz.

Ortak metin işlevlerini kullanma

Yukarıda belirtildiği gibi tam kod örnekleri, API isteklerini yetkilendirmek ve oluşturmak için ortak kod kullanır. Örneğin, Python örneklerindeki build_resource işlevi, eklenebilecek veya güncellenebilecek bir kaynak oluşturmak için kaynak özelliklerini değerleriyle eşleyen bir sözlük kullanır. JavaScript, PHP, Ruby, Go ve Apps Komut Dosyası için benzer işlevler sağlanır.

Örneğin, aşağıdaki sekmeler, kaynakları oluşturmaya yönelik ortak metin işlevlerinin bir playlist kaynağı oluşturmak için nasıl çağrılacağını gösterir. Ortak metin işlevlerinin, ne tür bir kaynak oluşturulduğunu bilmesine gerek olmadığını unutmayın.

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 Komut Dosyası
// 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'
});
Git
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)

Mevcut kaynakları yükleyin

Mevcut bir kaynağı güncelleme isteğini test etmek için söz konusu kaynağın geçerli özellik değerlerini güncelleme formuna yükleyebilirsiniz. Örneğin, bir videoyla ilgili meta verileri güncellemek için id özellik alanına video kimliğini girin ve Kaynak yükle düğmesini tıklayın. Geçerli özellik değerleri forma yüklenir ve yalnızca değiştirmek istediğiniz değerleri güncelleyebilirsiniz.