Talimatlar
Etkileşimli kod snippet'leri aracı, API isteklerini kolayca test etmenize ve bu isteklere özel kod örnekleri oluşturmanıza olanak tanır. Araç, belirli bir yöntem için bir veya daha fazla kullanım alanına ait kod snippet'lerini gösterir. Her kullanım alanı, ilgili 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 isteklerini yürütme
İstek parametreleri listesinin yanındaki Execute (Yürüt) düğmesini tıklayarak istekleri yürütebilirsiniz. Uygulamaya sizin adınıza API istekleri gönderme yetkisi vermediyseniz bunu yapmanız istenir. Ek bir önlem olarak, isteğiniz bir yazma işlemi gerçekleştiriyorsa (kanalınızla ilişkili kaynakları ekleme, güncelleme veya silme) isteği gerçekten yürütmeden önce yürütmek istediğinizi onaylamanız istenir.

Kod snippet'leri ve tam örnekler arasında geçiş yapma
Araç, her kullanım alanı için ç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 tanımlar.
Araç ayrıca, bu kod snippet'ini API isteklerini yetkilendirmek ve API istekleri oluşturmak için standart işlevleri tanımlayan bir şablona yerleştiren tam bir kod örneği de 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ırma
Tam kod örnekleri, kopyalanıp yerel olarak çalıştırılacak şekilde tasarlanmıştır. Kod örneklerinin tamamını çalıştırmak için aşağıdaki ön koşulları ve kurulum adımlarını uygulayın:
Ön koşullar
- Java 1.7 veya daha yeni bir sürüm
- Gradle 2.3 veya daha yeni bir sürüm
Projenizi oluşturma ve kod örneklerini çalıştırma
-
Cloud Console'da bir proje oluşturun ve web uygulaması için kimlik bilgilerini ayarlayın. Yetkilendirilmiş 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.gradledosyası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.jsondosyasınısrc/main/resources/client_secret.jsonkonumuna kaydedin. -
Çalışma dizininizden kod örneğinin tamamını
src/main/java/ApiExample.javadosyasına kopyalayın. (Farklı örnekleri çalıştırmak içinbuild.gradledosyasını değiştirmeniz gerekmemesi amacıyla her örnekteki sınıf adıApiExampleolarak belirlenmiştir.) -
Örneği komut satırından çalıştırın:
gradle -q run
-
Çoğu örnek,
STDOUTöğesine bir şeyler 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.
-
Cloud Console'da bir proje oluşturun ve bir web uygulaması için kimlik bilgileri oluşturun. İstek göndereceğiniz URL'yi (ör.
http://localhost) belirlemek için yetkilendirilmiş JavaScript kaynaklarını ayarlayın. -
Kod örneğinin tamamını web sunucunuzun erişebileceği yerel bir dosyaya (ör.
/var/www/html/example.html) kopyalayın. -
Kod örneğinde, istek için kullanılacak istemci kimliğini ayarlayan satırı bulun ve değeri, kimlik bilgilerinizin istemci kimliğiyle değiştirin:
gapi.client.init({ 'clientId': 'REPLACE_ME', -
Dosyayı tarayıcınızda (ör.
http://localhost/example.html) açın. Google Chrome gibi hata ayıklama konsolu olan bir tarayıcı kullanmanız önerilir. -
Gerekirse isteği yetkilendirin. İstek yetkilendirilirse hata ayıklama konsolu, isteğe verilen API yanıtını JSON nesnesi olarak gösterir.
Ön koşullar
- Node.js yüklü olmalıdır.
- npm paket yönetimi aracı (Node.js ile birlikte gelir).
- Node.js için Google API'leri istemci kitaplığı:
npm install googleapis --save
- İnternet erişimi ve web tarayıcısı
- Google Hesabı
Projenizi oluşturma ve kod örneklerini çalıştırma
-
Cloud Console'da bir proje oluşturun ve Google Cloud Console'da OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkili
client_secret.jsondosyasını yerel bir dosyaya kaydedin. -
Kod örneğinin tamamını
client_secret.jsondosyasıyla aynı dizindeki yerel bir dosyaya kopyalayın (veya örneği, ilgili dosyanın konumunu doğru şekilde tanımlayacak şekilde değiştirin). -
Örneği komut satırından çalıştırın:
node sample.js
-
Çoğu örnek,
STDOUTveya web uygulaması örnekleri için görüntülediğiniz web sayfasına bir şeyler 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 sonraki sürümler
- pip paket yönetimi 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
- Requests HTTP kitaplığı.
pip install --upgrade requests
Projenizi oluşturma ve kod örneklerini çalıştırma
-
Cloud Console'da bir proje oluşturun ve Google Cloud Console'da 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 ve bu kimlik bilgileri için yetkili yönlendirme URI'lerini de ayarlayın. Aksi takdirde, uygulama türünü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkili
client_secret.jsondosyasını yerel bir dosyaya kaydedin. -
Kod örneğinin tamamını
client_secret.jsondosyasıyla aynı dizindeki yerel bir dosyaya kopyalayın (veya örneği, ilgili dosyanın konumunu doğru şekilde tanımlayacak şekilde 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 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 aşağıdaki gibi bir satır içerir:
app.run('localhost', 8080, debug=True)
Bu kod,http://localhost:8080adresinde yerel bir web sunucusu başlatır. Ancak komut dosyası, siz tarayıcıdahttp://localhost:8080adresine gidene kadar API isteği 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.) -
Çoğu örnek,
STDOUTkonumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına bir şeyler 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ü PHP 5.4 veya daha yeni bir sürüm.
- Composer bağımlılık yönetim 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
-
Cloud Console'da bir proje oluşturun ve Google Cloud Console'da OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Diğer olarak belirleyin.
-
Kimlik bilgilerinizle ilişkili
client_secret.jsondosyasını yerel bir dosyaya kaydedin. -
Kod örneğinin tamamını
client_secret.jsondosyasıyla aynı dizindeki yerel bir dosyaya kopyalayın (veya örneği, ilgili dosyanın konumunu doğru şekilde tanımlayacak şekilde değiştirin). -
Örneği komut satırından çalıştırın:
php sample.php
-
Çoğu örnek,
STDOUTkonumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına bir şeyler 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
- Ruby 2.0 veya daha yeni sürümler
- Ruby için Google API'leri İstemci Kitaplığı:
gem install google-api-client
Projenizi oluşturma ve kod örneklerini çalıştırma
-
Cloud Console'da bir proje oluşturun ve Google Cloud Console'da OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkili
client_secret.jsondosyasını yerel bir dosyaya kaydedin. -
Kod örneğinin tamamını
client_secret.jsondosyasıyla aynı dizindeki yerel bir dosyaya kopyalayın (veya örneği, ilgili dosyanın konumunu doğru şekilde tanımlayacak şekilde değiştirin). -
Örneği komut satırından çalıştırın:
ruby sample.rb
-
Çoğu örnek,
STDOUTkonumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına bir şeyler 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.
-
Cloud Console'da bir proje oluşturun ve Google Cloud Console'da OAuth 2.0 kimlik bilgilerini ayarlayın. Kimlik bilgilerinizi ayarlarken uygulama türünü Diğer olarak ayarlayın.
-
Kimlik bilgilerinizle ilişkili
client_secret.jsondosyasını yerel bir dosyaya kaydedin. -
Kod örneğinin tamamını
client_secret.jsondosyasıyla aynı dizindeki yerel bir dosyaya kopyalayın (veya örneği, ilgili dosyanın konumunu doğru şekilde tanımlayacak şekilde değiştirin). -
Örneği komut satırından çalıştırın:
go run sample.go
-
Çoğu örnek,
STDOUTkonumuna veya web uygulaması örnekleri için görüntülediğiniz web sayfasına bir şeyler 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.
Standart işlevleri kullanma
Yukarıda belirtildiği gibi, tam kod örneklerinde API isteklerini yetkilendirmek ve oluşturmak için ortak metin kodu kullanılı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 sekmelerde playlist kaynağı oluşturmak için kaynak oluşturmaya yönelik standart işlevlerin nasıl çağrılacağı gösterilmektedir. Standart işlevlerin, oluşturulan kaynağın türünü 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ükleme
Mevcut bir kaynağı güncelleme isteğini test etmek için ilgili kaynağın mevcut ö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 Kaynağı yükle düğmesini tıklayın. Mevcut özellik değerleri forma yüklenir ve yalnızca değiştirmek istediğiniz değerleri güncelleyebilirsiniz.