วิธีการ
เครื่องมือข้อมูลโค้ดแบบอินเทอร์แอกทีฟช่วยให้คุณทดสอบคำขอ API และสร้างตัวอย่างโค้ดที่เฉพาะเจาะจงสำหรับคำขอเหล่านั้นได้อย่างง่ายดาย สำหรับเมธอดใดก็ตาม เครื่องมือจะแสดงข้อมูลโค้ดสำหรับกรณีการใช้งานอย่างน้อย 1 กรณี และแต่ละกรณีการใช้งานจะอธิบายวิธีทั่วไปในการเรียกเมธอดนั้น ตัวอย่างเช่น คุณสามารถเรียกเมธอด channels.list เพื่อดึงข้อมูลเกี่ยวกับช่องที่เฉพาะเจาะจงหรือเกี่ยวกับช่องของผู้ใช้ปัจจุบัน
เรียกใช้คำขอ API
คุณสามารถเรียกใช้คำขอได้โดยคลิกปุ่มเรียกใช้ ข้างรายการพารามิเตอร์คำขอ หากก่อนหน้านี้คุณยังไม่ได้ให้สิทธิ์แอปพลิเคชันในการส่งคำขอ API ในนามของคุณ ระบบจะแจ้งให้คุณดำเนินการดังกล่าว และเพื่อความปลอดภัยเพิ่มเติม หากคำขอของคุณดำเนินการเขียน เช่น การแทรก การอัปเดต หรือการลบทรัพยากรที่เชื่อมโยงกับช่องของคุณ ระบบจะขอให้คุณยืนยันว่าต้องการเรียกใช้คำขอก่อนที่จะเรียกใช้จริง

สลับข้อมูลโค้ดและตัวอย่างแบบเต็ม
สำหรับแต่ละกรณีการใช้งาน เครื่องมือจะแสดงข้อมูลโค้ดที่ระบุโค้ดที่เฉพาะเจาะจงสำหรับเมธอดที่กำลังเรียก ข้อมูลโค้ดแต่ละรายการจะระบุเมธอดที่กำลังเรียก รวมถึงค่าพารามิเตอร์และพร็อพเพอร์ตี้ที่ใช้ในคำขอ API
นอกจากนี้ เครื่องมือยังแสดงตัวอย่างโค้ดแบบเต็มที่ใส่ข้อมูลโค้ดนั้นลงในเทมเพลตซึ่งกำหนดฟังก์ชัน Boilerplate สำหรับการให้สิทธิ์คำขอ API และสร้างคำขอ API คุณสามารถใช้แถบเลื่อนเหนือตัวอย่างเพื่อสลับระหว่างข้อมูลโค้ดและตัวอย่างแบบเต็มได้

เรียกใช้ตัวอย่างโค้ดแบบเต็มในเครื่อง
ตัวอย่างโค้ดแบบเต็มได้รับการออกแบบมาให้คัดลอกและเรียกใช้ในเครื่อง โปรดทราบข้อกำหนดเบื้องต้นและขั้นตอนการตั้งค่าต่อไปนี้สำหรับการเรียกใช้ตัวอย่างโค้ดแบบเต็ม
ข้อกำหนดเบื้องต้น
- Java 1.7 ขึ้นไป
- Gradle 2.3 ขึ้นไป
ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด
-
สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบสำหรับเว็บแอปพลิเคชัน ตั้งค่า 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 Console และตั้งค่าข้อมูลเข้าสู่ระบบสำหรับเว็บแอปพลิเคชัน ตั้งค่าต้นทาง JavaScript ที่ได้รับอนุญาตเพื่อระบุ URL ที่คุณจะใช้ส่งคำขอ (เช่น
http://localhost) -
คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องที่เว็บเซิร์ฟเวอร์เข้าถึงได้ (เช่น
/var/www/html/example.html) -
ค้นหาบรรทัดในตัวอย่างโค้ดที่ตั้งค่ารหัสไคลเอ็นต์ที่จะใช้สำหรับคำขอ แล้วแทนที่ค่าด้วยรหัสไคลเอ็นต์สำหรับข้อมูลเข้าสู่ระบบของคุณ
gapi.client.init({ 'clientId': 'REPLACE_ME', -
เปิดไฟล์ในเบราว์เซอร์ (เช่น
http://localhost/example.html) ขอแนะนำให้ใช้เบราว์เซอร์ที่มีคอนโซลดีบัก เช่น Google Chrome -
ให้สิทธิ์คำขอหากจำเป็น หากคำขอได้รับอนุญาต คอนโซลดีบักควรแสดงการตอบกลับจาก API ต่อคำขอเป็นออบเจ็กต์ JSON
ข้อกำหนดเบื้องต้น
- ต้องติดตั้ง Node.js
- เครื่องมือจัดการแพ็กเกจ npm (มาพร้อมกับ Node.js)
- ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Node.js
npm install googleapis --save
- สิทธิ์เข้าถึงอินเทอร์เน็ตและเว็บเบราว์เซอร์
- บัญชี Google
ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด
-
สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ 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
- ไลบรารี HTTP ของคำขอ
pip install --upgrade requests
ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด
-
สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นเว็บแอปพลิเคชัน สำหรับตัวอย่างที่ใช้เฟรมเวิร์กเว็บแอปพลิเคชัน Flask Python และตั้งค่า URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตสำหรับข้อมูลเข้าสู่ระบบเหล่านั้นด้วย มิฉะนั้น ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ
-
บันทึกไฟล์
client_secret.jsonที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง -
คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์
client_secret.json(หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง) -
เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง
python sample.py
หมายเหตุสำหรับตัวอย่างเว็บแอปพลิเคชันเซิร์ฟเวอร์:
หากคุณเรียกใช้ตัวอย่าง Python สำหรับเว็บแอปพลิเคชันเซิร์ฟเวอร์ การเรียกใช้สคริปต์จะเริ่มเว็บเซิร์ฟเวอร์ในเครื่อง หากต้องการเรียกใช้คำขอ API จริง คุณต้องไปที่หน้าเว็บที่แสดงในเบราว์เซอร์ ตัวอย่างเช่น ตัวอย่าง Python ที่ใช้เฟรมเวิร์กเว็บแอปพลิเคชัน Flask จะมีบรรทัดลักษณะนี้:
app.run('localhost', 8080, debug=True)
โค้ดนี้จะเริ่มเว็บเซิร์ฟเวอร์ในเครื่องที่http://localhost:8080อย่างไรก็ตาม สคริปต์จะไม่พยายามเรียกใช้คำขอ API จนกว่าคุณจะไปที่http://localhost:8080ในเบราว์เซอร์ (คุณต้องตั้งค่า URL สำหรับเซิร์ฟเวอร์ในเครื่องเป็น URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตสำหรับข้อมูลเข้าสู่ระบบการให้สิทธิ์ด้วย) -
ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน
STDOUTหรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย
ข้อกำหนดเบื้องต้น
- PHP 5.4 ขึ้นไปพร้อมอินเทอร์เฟซบรรทัดคำสั่ง (CLI) และส่วนขยาย JSON ที่ติดตั้ง
- เครื่องมือจัดการการขึ้นต่อกัน Composer
- ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ PHP
php composer.phar require google/apiclient:^2.0
ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด
-
สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ
-
บันทึกไฟล์
client_secret.jsonที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง -
คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์
client_secret.json(หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง) -
เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง
php sample.php
-
ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน
STDOUTหรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย
ข้อกำหนดเบื้องต้น
- Ruby 2.0 ขึ้นไป
- ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Ruby
gem install google-api-client
ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด
-
สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ
-
บันทึกไฟล์
client_secret.jsonที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง -
คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์
client_secret.json(หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง) -
เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง
ruby sample.rb
-
ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน
STDOUTหรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย
-
สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ
-
บันทึกไฟล์
client_secret.jsonที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง -
คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์
client_secret.json(หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง) -
เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง
go run sample.go
-
ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน
STDOUTหรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย
ใช้ฟังก์ชัน Boilerplate
ดังที่กล่าวไว้ข้างต้น ตัวอย่างโค้ดแบบเต็มจะใช้โค้ด Boilerplate สำหรับการให้สิทธิ์และสร้างคำขอ API ตัวอย่างเช่น ฟังก์ชัน build_resource ในตัวอย่าง Python จะใช้พจนานุกรมที่จับคู่พร็อพเพอร์ตี้ทรัพยากรกับค่าของพร็อพเพอร์ตี้เหล่านั้นเพื่อสร้างทรัพยากรที่สามารถแทรกหรืออัปเดตได้ นอกจากนี้ ยังมีฟังก์ชันที่คล้ายกันสำหรับ JavaScript, PHP, Ruby, Go และ Apps Script
ตัวอย่างเช่น แท็บด้านล่างแสดงวิธีเรียกฟังก์ชัน Boilerplate สำหรับการสร้างทรัพยากรเพื่อสร้างทรัพยากร playlist โปรดทราบว่าฟังก์ชัน Boilerplate ไม่จำเป็นต้องทราบประเภทของทรัพยากรที่กำลังสร้าง
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 แล้วคลิกปุ่มโหลดทรัพยากร ค่าพร็อพเพอร์ตี้ปัจจุบันจะโหลดลงในแบบฟอร์ม และคุณสามารถอัปเดตเฉพาะค่าที่ต้องการเปลี่ยนได้