เอกสารนี้ครอบคลุมเทคนิคบางอย่างที่คุณสามารถใช้เพื่อปรับปรุงประสิทธิภาพ แอปพลิเคชันของคุณ ในบางกรณี ตัวอย่างจาก API ที่ติดตั้งใช้งานอื่นๆ เพื่อให้เห็นแนวคิดที่นำเสนอ แต่ก็มีการใช้แนวคิดเดียวกัน บนหน้าจอและ API ของวิดีโอ 360
การทำงานกับทรัพยากรบางส่วน
อีกวิธีในการปรับปรุงประสิทธิภาพการเรียก API ของคุณคือการขอเฉพาะ ส่วนของข้อมูลที่คุณสนใจ ซึ่งช่วยให้แอปพลิเคชันของคุณ หลีกเลี่ยงการโอน แยกวิเคราะห์ และจัดเก็บฟิลด์ที่ไม่จำเป็นเพื่อให้สามารถใช้ ทรัพยากรอย่างเครือข่าย, CPU และหน่วยความจำได้อย่างมีประสิทธิภาพมากขึ้น
คำตอบเพียงบางส่วน
โดยค่าเริ่มต้น เซิร์ฟเวอร์จะส่งการเป็นตัวแทนแบบเต็มของทรัพยากรกลับมาหลังจาก คำขอ คุณขอให้เซิร์ฟเวอร์ส่งเพื่อประสิทธิภาพที่ดีขึ้นได้ เฉพาะช่องที่คุณต้องการ และได้รับคำตอบบางส่วนแทน
หากต้องการขอการตอบกลับบางส่วน ให้ใช้พารามิเตอร์คำขอ fields
เพื่อระบุ
ช่องที่ต้องการให้แสดง คุณสามารถใช้พารามิเตอร์นี้กับคำขอใดก็ได้
ซึ่งแสดงผลข้อมูลการตอบกลับ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้พารามิเตอร์ fields
กับค่า
ดิสเพลย์และ API ของวิดีโอ 360
คำขอแบบง่าย: คำขอ HTTP GET
นี้ข้ามพารามิเตอร์ fields
และ
จะแสดงแหล่งข้อมูลแบบเต็ม
GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1
การตอบกลับทรัพยากรแบบเต็ม: ข้อมูลทรัพยากรทั้งหมดจะมีข้อมูลต่อไปนี้ ตลอดจนรายการอื่นๆ ที่ตัดออกเพื่อความสั้นกระชับ
200 OK
{
"advertisers": [
{
"name": "advertisers/1",
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1",
"entityStatus": "ENTITY_STATUS_ACTIVE",
"updateTime": "2019-01-01T00:00:00.000000Z",
"generalConfig": {
"domainUrl": "http://example.com",
"timeZone": "America/New_York",
"currencyCode": "USD",
"address": {
}
},
"adServerConfig": {
"thirdPartyOnlyConfig": {
}
},
"creativeConfig": {
},
"dataAccessConfig": {
"sdfConfig": {
"sdfConfig": {
"version": "VERSION_3_1"
}
}
},
"integrationDetails": {
}
},
{
"name": "advertisers/2",
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2",
"entityStatus": "ENTITY_STATUS_ACTIVE",
"updateTime": "2019-01-01T00:00:00.000000Z",
"generalConfig": {
"domainUrl": "http://example.com",
"timeZone": "America/New_York",
"currencyCode": "USD",
"address": {
}
},
"adServerConfig": {
"thirdPartyOnlyConfig": {
}
},
"creativeConfig": {
},
"dataAccessConfig": {
"sdfConfig": {
"sdfConfig": {
"version": "VERSION_3_1"
}
}
},
"integrationDetails": {
}
},
...
],
"nextPageToken": "..."
}
คำขอการตอบกลับบางส่วน: คำขอต่อไปนี้สำหรับทรัพยากรเดียวกันนี้
ใช้พารามิเตอร์ fields
เพื่อลดปริมาณข้อมูลที่ส่งคืนลงอย่างมาก
GET https://displayvideo.googleapis.com/v3/advertisers?partnerId=1&fields=advertisers(advertiserId,partnerId,displayName)
การตอบกลับบางส่วน: เซิร์ฟเวอร์จะส่งข้อความตอบกลับคำขอข้างต้นเพื่อตอบกลับ ที่มีอาร์เรย์ผู้ลงโฆษณาแบบแยกย่อยที่มีเฉพาะ รหัสผู้ลงโฆษณา ชื่อที่แสดง และรหัสพาร์ทเนอร์ของผู้ลงโฆษณาแต่ละราย ปัจจุบัน
200 OK
{
"advertisers": [
{
"advertiserId": "1",
"partnerId": "1",
"displayName": "Example Advertiser 1"
},
{
"advertiserId": "2",
"partnerId": "1",
"displayName": "Example Advertiser 2"
},
...
]
}
โปรดทราบว่าการตอบกลับจะเป็นออบเจ็กต์ JSON ที่มีเฉพาะช่องที่เลือกเท่านั้น และออบเจ็กต์หลักที่ล้อมรอบอยู่
ดูรายละเอียดเกี่ยวกับวิธีจัดรูปแบบพารามิเตอร์ fields
ในลำดับต่อไป ตามด้วย
รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่แน่นอนที่จะแสดงในคำตอบ
สรุปไวยากรณ์พารามิเตอร์ของช่อง
รูปแบบของค่าพารามิเตอร์คำขอ fields
อิงตาม XPath แบบหลวมๆ
ไวยากรณ์ โปรดดูสรุปไวยากรณ์ที่รองรับด้านล่าง และตัวอย่างเพิ่มเติมมีดังนี้
ที่ให้ไว้ในส่วนต่อไปนี้
ใช้รายการที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเลือกหลายช่อง
ใช้
a/b
เพื่อเลือกช่องb
ที่ซ้อนอยู่ภายในช่องa
ใช้a/b/c
เพื่อเลือกช่องc
ที่ซ้อนอยู่ในb
ใช้ตัวเลือกย่อยเพื่อขอชุดฟิลด์ย่อยของอาร์เรย์ที่เจาะจง หรือ โดยวางนิพจน์ในวงเล็บ "
( )
"เช่น
fields=advertisers(advertiserId,generalConfig/domainUrl)
จะแสดงเฉพาะรหัสผู้ลงโฆษณาและ URL โดเมนสำหรับแต่ละองค์ประกอบใน ผู้ลงโฆษณาตามลำดับ นอกจากนี้ คุณยังสามารถระบุช่องย่อยช่องเดียว โดยfields=advertisers(advertiserId)
เทียบเท่ากับfields=advertisers/advertiserId
ตัวอย่างเพิ่มเติมของการใช้พารามิเตอร์ "ฟิลด์"
ตัวอย่างด้านล่างมีคำอธิบายวิธีที่ค่าพารามิเตอร์ fields
ส่งผลต่อคำตอบ
- ระบุช่องที่คุณต้องการให้แสดงผล หรือทำเลือกช่อง
ค่าพารามิเตอร์คำขอ
fields
คือรายการช่องที่คั่นด้วยคอมมา และ ระบบจะระบุแต่ละช่องโดยสัมพันธ์กับรูทของคำตอบ ดังนั้นถ้าคุณ กำลังดำเนินการlist
การตอบสนองคือคอลเล็กชัน และ มักมีอาร์เรย์ของทรัพยากร หากคุณกำลังดำเนินการ ที่แสดงแหล่งข้อมูลเดียว มีการระบุช่องซึ่งสัมพันธ์กับ ทรัพยากร ถ้าฟิลด์ที่คุณเลือกเป็น (หรือเป็นส่วนหนึ่งของ) อาร์เรย์ เซิร์ฟเวอร์ จะแสดงผลส่วนที่เลือกขององค์ประกอบทั้งหมดในอาร์เรย์ตัวอย่างระดับคอลเล็กชันบางส่วนมีดังนี้
ตัวอย่าง ผลกระทบ advertisers
แสดงองค์ประกอบทั้งหมดใน advertisers
อาร์เรย์ รวม ทุกช่องในแต่ละเอลิเมนต์ แต่ ไม่มีฟิลด์อื่นๆadvertisers,nextPageToken
แสดงผลทั้ง nextPageToken
และเอลิเมนต์ทั้งหมดในฟิลด์advertisers
advertisers/advertiserId
แสดงเฉพาะ advertiserId
สำหรับองค์ประกอบทั้งหมดในadvertisers
เมื่อใดก็ตามที่ช่องที่ฝัง การแสดงผล การตอบกลับรวมถึง ออบเจ็กต์หลักที่ล้อมรอบอยู่ ช่องหลักจะไม่รวม ช่องย่อยอื่นๆ ยกเว้น พวกเขายังถูกเลือกอยู่ อย่างชัดเจนadvertisers/generalConfig/domainUrl
แสดงช่อง domainUrl
สำหรับออบเจ็กต์generalConfig
ซึ่งฝังอยู่ใต้advertisers
อาร์เรย์ตัวอย่างระดับทรัพยากรบางส่วนมีดังนี้
ตัวอย่าง ผลกระทบ advertiserId
แสดงช่อง advertiserId
ของทรัพยากรที่ขอgeneralConfig/domainUrl
แสดงช่อง domainUrl
สำหรับออบเจ็กต์generalConfig
ในทรัพยากรที่ขอ- ขอเฉพาะบางช่องโดยใช้การเลือกย่อย
โดยค่าเริ่มต้น หากคำขอของคุณระบุฟิลด์เฉพาะ เซิร์ฟเวอร์จะส่งกลับ ออบเจ็กต์หรืออาร์เรย์องค์ประกอบ ให้ครบถ้วนสมบูรณ์ คุณระบุการตอบกลับได้ ที่มีเฉพาะฟิลด์ย่อยบางฟิลด์ คุณดำเนินการนี้โดยใช้ "
( )
" ไวยากรณ์การเลือกย่อย ดังที่แสดงในตัวอย่างด้านล่างตัวอย่าง ผลกระทบ advertisers(advertiserId,generalConfig/domainUrl)
แสดงเฉพาะ ค่าของ advertiserId
และ GeneralConfigdomainUrl
สำหรับ แต่ละองค์ประกอบในadvertisers
อาร์เรย์
การจัดการคำตอบบางส่วน
หลังจากที่เซิร์ฟเวอร์ประมวลผลคำขอที่ถูกต้องซึ่งมีการค้นหา fields
แล้ว
ระบบจะส่งรหัสสถานะ HTTP 200 OK
กลับมา พร้อมกับแท็ก
หากพารามิเตอร์การค้นหา fields
มีข้อผิดพลาดหรือไม่ถูกต้อง
เซิร์ฟเวอร์แสดงรหัสสถานะ HTTP 400 Bad Request
พร้อมข้อผิดพลาด
ที่บอกว่าการเลือกฟิลด์มีปัญหาอย่างไร (เช่น
"Invalid field selection a/b"
)