دستورالعملها
ابزار تکهکدهای تعاملی به شما امکان میدهد درخواستهای API را بهراحتی آزمایش کنید و نمونههای کد مختص آن درخواستها را تولید کنید. برای هر روش معینی، این ابزار تکهکدهای مربوط به یک یا چند مورد استفاده را نشان میدهد و هر مورد استفاده روشی رایج برای فراخواندن آن روش را شرح میدهد. برای مثال، میتوانید متد channels.list را برای بازیابی دادههای مربوط به یک کانال خاص یا کانال کاربر فعلی فراخوانی کنید.
اجرای درخواستهای میانای برنامهسازی کاربردی
با کلیک روی دکمه اجرا در کنار فهرست پارامترهای درخواست میتوانید درخواستها را اجرا کنید. اگر قبلاً به برنامه اجازه ندادهاید که درخواستهای API را ازطرف شما ارسال کند، از شما خواسته میشود این کار را انجام دهید. بهعنوان یک اقدام احتیاطی اضافی، اگر درخواست شما یک عملیات نوشتن انجام دهد – درج، بهروزرسانی، یا حذف منابع مرتبط با کانال شما – از شما خواسته میشود قبلاز اجرای واقعی درخواست، تأیید کنید که میخواهید درخواست اجرا شود.

تکهکدها و نمونههای کامل را روشن/خاموش کنید
برای هر مورد استفاده، این ابزار تکهکدی را نشان میدهد که کد مختص روش خاصی را که فراخوانی میشود شناسایی میکند. هر گلچین روش فراخوانیشده و همچنین مقادیر پارامتر و دارایی استفادهشده در درخواست API را شناسایی میکند.
علاوهبراین، این ابزار نمونه کد کاملی را نیز نشان میدهد که آن قطعه کد را در قالبی قرار میدهد که توابع تکراری را برای مجاز کردن درخواستهای API و ساختن درخواستهای API تعریف میکند. میتوانید از لغزنده بالای نمونهها برای جابهجایی بین گزیده و نمونه کامل استفاده کنید:

اجرای نمونههای کد کامل بهصورت محلی
نمونههای کد کامل برای کپی شدن و اجرا بهصورت محلی طراحی شدهاند. لطفاً پیشنیازهای زیر و مراحل راهاندازی را برای اجرای نمونههای کد کامل درنظر بگیرید:
پیشنیازها
- Java 1.7 یا بالاتر
- Gradle نسخه ۲.۳ یا بالاتر
راهاندازی پروژه و اجرای نمونه کد
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری را برای برنامه وب راهاندازی کنید. شناسههای URI هدایت مجاز را بهطور مناسب تنظیم کنید.
-
برای آمادهسازی پروژهتان، دستورالعملهای راهنمای شروع سریع 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" } -
از فهرست راهنمای کاریتان، فایل
client_secrets.jsonمرتبط با اطلاعات اعتباریتان را درsrc/main/resources/client_secret.jsonذخیره کنید. -
از دایرکتوری کاریتان، نمونه کد کامل را در
src/main/java/ApiExample.javaکپی کنید. (نام کلاس در هر نمونهApiExampleاست تا برای اجرای نمونههای مختلف نیازی به اصلاح فایلbuild.gradleنداشته باشید.) -
نمونه را از خط فرمان اجرا کنید:
gradle -q run
-
اکثر نمونهها چیزی را در
STDOUTچاپ میکنند. همچنین میتوانید وبسایت YouTube را بررسی کنید تا تأثیر درخواستهایی که داده مینویسند، مانند درخواستهایی که فهرست پخش یا بخشهای کانال ایجاد میکنند، را ببینید.
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری را برای برنامه وب راهاندازی کنید. مبدأهای مجاز جاوا اسکریپت را تنظیم کنید تا نشانی وبی را که از آن درخواست ارسال میکنید شناسایی کنید (برای نمونه،
http://localhost). -
نمونه کد کامل را در فایل محلی قابلدسترس برای سرور وب خود (مثلاً
/var/www/html/example.html) کپی کنید. -
خطی را در نمونه کد پیدا کنید که شناسه کارخواه را برای استفاده در درخواست تنظیم میکند و مقدار را با شناسه کارخواه برای اطلاعات اعتباریتان جایگزین کنید:
gapi.client.init({ 'clientId': 'REPLACE_ME', -
فایل را در مرورگرتان (مثلاً
http://localhost/example.html) باز کنید. توصیه میشود از مرورگری با کنسول اشکالزدایی، مانند Google Chrome، استفاده کنید. -
درصورت نیاز، درخواست را مجاز کنید. اگر درخواست مجاز باشد، کنسول اشکالزدایی باید پاسخ میانای برنامهسازی کاربردی به درخواست را بهعنوان شیء JSON نمایش دهد.
پیشنیازها
- Node.js باید نصب شود.
- ابزار مدیریت بسته npm (همراه با Node.js ارائه میشود).
- کتابخانه کارخواهان میانای برنامهسازی کاربردی Google برای Node.js:
npm install googleapis --save
- دسترسی به اینترنت و مرورگر وب.
- «حساب Google».
راهاندازی پروژه و اجرای نمونه کدها
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری OAuth 2.0 را در کنسول Google Cloud راهاندازی کنید. هنگام راهاندازی اعتبارنامههایتان، نوع برنامه را روی دیگر تنظیم کنید.
-
فایل
client_secret.jsonمرتبط با اطلاعات اعتباریتان را در فایل محلی ذخیره کنید. -
نمونه کد کامل را در فایلی محلی در همان فهرست راهنمای فایل
client_secret.jsonکپی کنید (یا نمونه را تغییر دهید تا مکان آن فایل را بهدرستی شناسایی کند). -
نمونه را از خط فرمان اجرا کنید:
node sample.js
-
اکثر نمونهها چیزی را در
STDOUTیا، برای نمونههای برنامه وب، در صفحه وبی که مشاهده میکنید چاپ میکنند. همچنین میتوانید وبسایت YouTube را بررسی کنید تا تأثیر درخواستهایی را که داده مینویسند، مانند درخواستهایی که فهرستهای پخش یا بخشهای کانال ایجاد میکنند، ببینید.
پیشنیازها
- Python 2.6 یا بالاتر
- ابزار مدیریت بسته pip
- کتابخانه کارخواهان Google APIs برای 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
- کتابخانه اچتیتیپی درخواستها.
pip install --upgrade requests
راهاندازی پروژه و اجرای نمونه کد
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری OAuth 2.0 را در کنسول Google Cloud راهاندازی کنید. هنگام راهاندازی اطلاعات کاربری، نوع برنامه را برای نمونههایی که از چارچوب برنامه وب Flask Python استفاده میکنند روی برنامه وب تنظیم کنید و همچنین شناسه منبع یکسان تغییرمسیر مجاز را برای آن اطلاعات کاربری تنظیم کنید. درغیراینصورت، نوع برنامه را روی دیگر تنظیم کنید.
-
فایل
client_secret.jsonمنسوب به اطلاعات اعتباریتان را در فایل محلی ذخیره کنید. -
نمونه کد کامل را در فایلی محلی در همان فهرست راهنمای فایل
client_secret.jsonکپی کنید (یا نمونه را تغییر دهید تا مکان آن فایل را بهدرستی شناسایی کند). -
نمونه را از خط فرمان اجرا کنید:
python sample.py
توجه برای مثالهای برنامه سرور وب:
اگر نمونههای Python را برای برنامههای سرور وب اجرا میکنید، اجرای این دستورگان سرور وب محلی را شروع میکند. برای اجرای واقعی درخواست میانای برنامهسازی کاربردی، باید در مرورگر به صفحه وب ارائهشده بروید. برای مثال، نمونههای Python که از چارچوب برنامه وب Flask استفاده میکنند حاوی خطی مانند این هستند:
app.run('localhost', 8080, debug=True)
این کد یک سرور وب محلی را درhttp://localhost:8080راهاندازی میکند. بااینحال، تا زمانی که واقعاً در مرورگر بهhttp://localhost:8080پیمایش نکنید، اسکریپت تلاشی برای اجرای درخواست API نمیکند. (نشانی وب سرور محلی شما نیز باید بهعنوان URI تغییرمسیر مجاز برای اطلاعات کاربری مجوز شما تنظیم شود.) -
اکثر نمونهها چیزی را در
STDOUTیا، برای نمونههای برنامه وب، در صفحه وبی که مشاهده میکنید چاپ میکنند. همچنین میتوانید وبسایت YouTube را بررسی کنید تا تأثیر درخواستهایی که داده مینویسند، مانند درخواستهایی که فهرست پخش یا بخشهای کانال ایجاد میکنند، را ببینید.
پیشنیازها
- PHP 5.4 یا بالاتر با میانای خط فرمان (CLI) و افزونه JSON نصبشده.
- ابزار مدیریت وابستگی Composer.
- کتابخانه کارخواهان Google APIs برای PHP:
php composer.phar require google/apiclient:^2.0
راهاندازی پروژه و اجرای نمونه کد
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری OAuth 2.0 را در کنسول Google Cloud راهاندازی کنید. هنگام تنظیم اعتبارنامههای خود، نوع برنامه را روی سایر تنظیم کنید.
-
فایل
client_secret.jsonمرتبط با اطلاعات اعتباریتان را در فایل محلی ذخیره کنید. -
نمونه کد کامل را در فایلی محلی در همان فهرست راهنمای فایل
client_secret.jsonکپی کنید (یا نمونه را تغییر دهید تا مکان آن فایل را بهدرستی شناسایی کند). -
نمونه را از خط فرمان اجرا کنید:
php sample.php
-
بیشتر نمونهها چیزی را در
STDOUTیا، برای نمونههای برنامه وب، در صفحه وبی که مشاهده میکنید چاپ میکنند. همچنین میتوانید وبسایت YouTube را بررسی کنید تا تأثیر درخواستهایی که داده مینویسند، مانند درخواستهایی که فهرست پخش یا بخشهای کانال ایجاد میکنند، را ببینید.
پیشنیازها
- Ruby نسخه ۲.۰ یا بالاتر
- کتابخانه کارخواه Google APIs برای Ruby:
gem install google-api-client
راهاندازی پروژه و اجرای نمونه کد
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری OAuth 2.0 را در کنسول Google Cloud راهاندازی کنید. هنگام راهاندازی اعتبارنامههایتان، نوع برنامه را روی دیگر تنظیم کنید.
-
فایل
client_secret.jsonمرتبط با اطلاعات اعتباریتان را در فایل محلی ذخیره کنید. -
نمونه کد کامل را در فایلی محلی در همان فهرست راهنمای فایل
client_secret.jsonکپی کنید (یا نمونه را تغییر دهید تا مکان آن فایل را بهدرستی شناسایی کند). -
نمونه را از خط فرمان اجرا کنید:
ruby sample.rb
-
اکثر نمونهها چیزی را در
STDOUTیا، برای نمونههای برنامه وب، در صفحه وبی که مشاهده میکنید چاپ میکنند. همچنین میتوانید وبسایت YouTube را بررسی کنید تا تأثیر درخواستهایی که داده مینویسند، مانند درخواستهایی که فهرست پخش یا بخشهای کانال ایجاد میکنند، را ببینید.
-
پروژهای در کنسول Cloud ایجاد کنید و اطلاعات اعتباری OAuth 2.0 را در کنسول Google Cloud راهاندازی کنید. هنگام راهاندازی اعتبارنامههایتان، نوع برنامه را روی دیگر تنظیم کنید.
-
فایل
client_secret.jsonمرتبط با اطلاعات اعتباریتان را در فایل محلی ذخیره کنید. -
نمونه کد کامل را در فایلی محلی در همان فهرست راهنمای فایل
client_secret.jsonکپی کنید (یا نمونه را تغییر دهید تا مکان آن فایل را بهدرستی شناسایی کند). -
نمونه را از خط فرمان اجرا کنید:
go run sample.go
-
اکثر نمونهها چیزی را در
STDOUTیا، برای نمونههای برنامه وب، در صفحه وبی که مشاهده میکنید چاپ میکنند. همچنین میتوانید وبسایت YouTube را بررسی کنید تا تأثیر درخواستهایی را که داده مینویسند، مانند درخواستهایی که فهرستهای پخش یا بخشهای کانال ایجاد میکنند، ببینید.
استفاده از توابع تکراری
همانطور که در بالا ذکر شد، نمونههای کد کامل از کد متن استاندارد برای مجاز کردن و ساختن درخواستهای API استفاده میکنند. برای مثال، تابع build_resource در نمونههای Python از واژهنامهای استفاده میکند که ویژگیهای منبع را به مقادیر آنها نگاشت میکند تا منبعی بسازد که بتوان آن را درج یا بهروز کرد. عملکردهای مشابهی برای جاوا اسکریپت، PHP، Ruby، Go، و Apps Script ارائه شده است.
برای مثال، برگههای زیر نشان میدهد که چگونه توابع متن ثابت برای ساختن منابع فراخوانده میشوند تا منبع playlist را بسازند. توجه داشته باشید که توابع متن آماده نیازی به دانستن نوع منبعی که ایجاد میشود ندارند.
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)بار کردن منابع موجود
برای آزمایش درخواست بهروزرسانی منبع موجود، میتوانید مقادیر خصوصیت فعلی آن منبع را در فرم بهروزرسانی بار کنید. برای مثال، برای بهروزرسانی فراداده مربوط به یک ویدیو، شناسه ویدیو را در فیلد ویژگی id وارد کنید و روی دکمه بارگذاری منبع کلیک کنید. مقادیر دارایی فعلی در فرم بار میشود و میتوانید فقط مقادیری را که میخواهید تغییر دهید بهروز کنید.