Talimatlar
Etkileşimli kod snippet'leri aracı, API isteklerini kolayca test etmenize ve bu isteklere özgü kod örnekleri oluşturmanıza olanak tanır. Belirli bir yöntem için araç, bir veya daha fazla kullanım alanına yönelik kod snippet'leri gösterir ve her kullanım alanı bu yöntemi çağırmanın yaygın bir yolunu açıklar. Örneğin, belirli bir kanal veya mevcut kullanıcının kanalıyla ilgili 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. Başvuruyu daha önce sizin adınıza API istekleri gönderme yetkisi vermediyseniz yapmanız istenir. Ek bir önlem olarak, isteğinizle ilgili bir yazma işlemi (kanalınızla ilişkili kaynakları ekleme, güncelleme veya silme) gerçekleştirilirse, istek gerçekten yürütülmeden önce gerçekleştirilmesi istediğinizi onaylamanız istenir.
Kod snippet'lerini ve tam örnekleri aç/kapat
Her kullanım alanında, araç, çağrılan belirli yönteme özgü kodu tanımlayan bir kod snippet'i gösterir. Her snippet, API isteğinde kullanılan parametre ve özellik değerlerinin yanı sıra çağrılan yöntemi tanımlar.
Ek olarak, araç, bu kod snippet'ini API isteklerini yetkilendirmek ve API istekleri oluşturmak için ortak işlevleri tanımlayan bir şablona yerleştiren bir tam kod örneği gösterir. Snippet ile tam örnek arasında geçiş yapmak için örneklerin üzerindeki kaydırma çubuğunu kullanabilirsiniz:
Tam kod örneklerini yerel olarak çalıştır
Tam kod örnekleri, yerel olarak kopyalanacak ve çalıştırılacak şekilde tasarlanmıştır. Lütfen aşağıdaki ön koşulları göz önünde bulundurun ve tam kod örneklerini çalıştırmayla ilgili adımları ayarlayın:
Ön koşullar
- Java 1.7 veya üstü
- Gradle 2.3 veya üstü
Projenizi oluşturma ve kod örneklerini çalıştırma
-
API Konsolu'nda bir proje oluşturun ve bir web uygulamasının kimlik bilgilerini ayarlayın. Yetkili yönlendirme URI'lerini uygun şekilde ayarlayın.
-
Projenizi hazırlamak için API Java Hızlı Başlangıç Kılavuzu'ndaki talimatları uygulayın, 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" }
-
Çalışma dizininizden, kimlik bilgilerinizle ilişkili
client_secrets.json
dosyasınısrc/main/resources/client_secret.json
dosyasına kaydedin. -
Çalışma dizininizden kod kodunun tamamını
src/main/java/ApiExample.java
konumuna kopyalayın. (Her örnekteki sınıf adıApiExample
olduğundan farklı örnekler çalıştırmak içinbuild.gradle
dosyasını değiştirmeniz gerekmez.) -
Örneği komut satırından çalıştırın:
gradle -q run
-
Çoğu örnek
STDOUT
ürününe bir şey yazdırır. Oynatma listeleri veya kanal bölümleri oluşturan istekler gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesini de kontrol edebilirsiniz.
-
API Konsolu'nda bir proje oluşturun ve bir web uygulamasının kimlik bilgilerini ayarlayın. İstek göndereceğiniz URL'yi tanımlamak için yetkili JavaScript kaynaklarını ayarlayın (ör.
http://localhost
). -
Kod kodunun tamamını web sunucunuzun erişebileceği yerel bir dosyaya kopyalayın (ör.
/var/www/html/example.html
). -
Kod örneğinde, istek için kullanılacak istemci kimliğini belirleyen satırı bulun ve değeri, kimlik bilgileriniz için istemci kimliğiyle değiştirin:
gapi.client.init({ 'clientId': 'REPLACE_ME',
-
Dosyayı tarayıcınızda açın (ör.
http://localhost/example.html
). Hata ayıklama konsolu olan bir tarayıcı kullanmanız önerilir (ör. Google Chrome). -
Gerekirse isteği yetkilendirin. İstek yetkilendirilmişse hata ayıklama konsolu, isteğe verilen API yanıtını bir JSON nesnesi olarak görüntülemelidir.
Ön koşullar
- Node.js yüklenmelidir.
- npm paket yönetimi 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 örneklerini çalıştırma
-
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ü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkilendirilen
client_secret.json
dosyasını yerel bir dosyaya kaydedin. -
Tam kod örneğini
client_secret.json
dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya dosyanın konumunu doğru bir şekilde tanımlamak için örneği değiştirin. -
Örneği komut satırından çalıştırın:
node sample.js
-
Çoğu örnek,
STDOUT
öğesine veya web uygulaması örneklerinde görüntülediğiniz web sayfasına bir şey yazdırır. Oynatma listeleri veya kanal bölümleri oluşturan istekler gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesini de kontrol edebilirsiniz.
Ön koşullar
- Python 2.6 veya üstü
- PIP paket yönetimi aracı
- Python için Google API'leri İstemci Kitaplığı:
pip install --upgrade google-api-python-client
- Kullanıcı yetkilendirme 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 uygulaması çerçevesi (web sunucusu uygulamaları için Python örnekleri çalıştırıyorsanız).
pip install --upgrade flask
- İstekler için HTTP kitaplığı.
pip install --upgrade requests
Projenizi oluşturma ve kod örneklerini çalıştırma
-
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 uygulaması çerçevesini kullanan örnekler için uygulama türünü Web uygulaması olarak ayarlayın. Ayrıca, bu kimlik bilgileri için yetkili yönlendirme URI'leri ayarlayın. Aksi takdirde, uygulama türünü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkilendirilen
client_secret.json
dosyasını yerel bir dosyaya kaydedin. -
Tam kod örneğini
client_secret.json
dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya dosyanın konumunu doğru bir şekilde tanımlamak için örneği değiştirin. -
Ö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ırmak yerel bir web sunucusu başlatır. API isteğini gerçekten çalıştırmak için bir tarayıcıda yayınlanan web sayfasına gitmeniz gerekir. Örneğin, Flask web uygulaması çerçevesini kullanan Python örnekleri aşağıdakine benzer bir satır içerir:
app.run('localhost', 8080, debug=True)
Bu kodhttp://localhost:8080
adresinde yerel bir web sunucusu başlatır. Ancak komut dosyası, aslında bir tarayıcıdahttp://localhost:8080
hedefine gidene kadar API isteği yürütmeye çalışmaz. (Yerel sunucunuzun URL'si, yetkilendirme kimlik bilgileriniz için yetkili yönlendirme URI'si olarak da ayarlanmalıdır.) -
Çoğu örnek,
STDOUT
öğesine veya web uygulaması örneklerinde görüntülediğiniz web sayfasına bir şey yazdırır. Oynatma listeleri veya kanal bölümleri oluşturan istekler gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesini de kontrol edebilirsiniz.
Ön koşullar
- Komut satırı arayüzü (KSA) ve JSON uzantısı yüklüyken PHP 5.4 veya sonraki sürümler.
- Oluşturucu bağımlı yönetimi aracı.
- PHP için Google API'leri İstemci Kitaplığı:
php composer.phar require google/apiclient:^2.0
Projenizi oluşturma ve kod örneklerini çalıştırma
-
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ü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkilendirilen
client_secret.json
dosyasını yerel bir dosyaya kaydedin. -
Tam kod örneğini
client_secret.json
dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya dosyanın konumunu doğru bir şekilde tanımlamak için örneği değiştirin. -
Örneği komut satırından çalıştırın:
php sample.php
-
Çoğu örnek,
STDOUT
öğesine veya web uygulaması örneklerinde görüntülediğiniz web sayfasına bir şey yazdırır. Oynatma listeleri veya kanal bölümleri oluşturan istekler gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesini de kontrol edebilirsiniz.
Ön koşullar
- Yakut 2.0 veya üstü
- Yakut için Google API'leri İstemci Kitaplığı:
gem install google-api-client
Projenizi oluşturma ve kod örneklerini çalıştırma
-
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ü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkilendirilen
client_secret.json
dosyasını yerel bir dosyaya kaydedin. -
Tam kod örneğini
client_secret.json
dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya dosyanın konumunu doğru bir şekilde tanımlamak için örneği değiştirin. -
Örneği komut satırından çalıştırın:
ruby sample.rb
-
Çoğu örnek,
STDOUT
öğesine veya web uygulaması örneklerinde görüntülediğiniz web sayfasına bir şey yazdırır. Oynatma listeleri veya kanal bölümleri oluşturan istekler gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesini de kontrol edebilirsiniz.
-
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ü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkilendirilen
client_secret.json
dosyasını yerel bir dosyaya kaydedin. -
Tam kod örneğini
client_secret.json
dosyasıyla aynı dizinde bulunan yerel bir dosyaya kopyalayın (veya dosyanın konumunu doğru bir şekilde tanımlamak için örneği değiştirin. -
Örneği komut satırından çalıştırın:
go run sample.go
-
Çoğu örnek,
STDOUT
öğesine veya web uygulaması örneklerinde görüntülediğiniz web sayfasına bir şey yazdırır. Oynatma listeleri veya kanal bölümleri oluşturan istekler gibi veri yazan isteklerin etkilerini görmek için YouTube web sitesini de kontrol edebilirsiniz.
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, kaynak veya eklenebilecek bir kaynak oluşturmak için kaynak özelliklerini değerleriyle eşleştiren bir sözlük kullanır. Benzer işlevler JavaScript, PHP, Yakut, Go ve Apps Komut Dosyası için sağlanır.
Örneğin, aşağıdaki sekmelerde, kaynak oluşturma amaçlı ortak işlevlerin bir playlist
kaynağı oluşturmak için nasıl çağrılacağı gösterilmektedir. Ortak metin işlevlerinin hangi tür kaynağın oluşturulduğunu bilmesi gerekmediğini unutmayın.
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'}
// 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)
Mevcut kaynakları yükle
Mevcut bir kaynağı güncelleme isteğini test etmek için söz konusu kaynağın mevcut mülk değerlerini güncelleme formuna yükleyebilirsiniz. Örneğin, bir videoyla ilgili meta verileri güncellemek için video URL'sinin id
alanına girin ve Kaynağı yükle düğmesini tıklayın. Mevcut mülk değerleri forma yüklenir ve yalnızca değiştirmek istediğiniz değerleri güncelleyebilirsiniz.