แนวทางหนึ่งในการเข้าถึงกลุ่มโดยเฉพาะ นั่นคือปลายทาง HTTP กลุ่มทั่วโลก (www.googleapis.com/batch
) ได้ปิดตัวลงในวันที่ 12 สิงหาคม 2020 ตามที่ประกาศไว้ในบล็อก Google Developers วิธีอื่นๆ ในการจัดกลุ่มยังคงทํางานอยู่ ตามที่ระบุไว้ในเอกสารอื่นๆ ในหน้านี้ หากโค้ดใช้ปลายทางกลุ่มการดําเนินการของ HTTP ทั่วโลก ให้ดูบล็อกโพสต์สําหรับคําแนะนําเกี่ยวกับการเปลี่ยนเพื่อใช้วิธีการอื่นๆ เช่น ปลายทางกลุ่ม HTTP เฉพาะสําหรับ API
(www.googleapis.com/batch/API/VERSION
)
เอกสารนี้แสดงวิธีจัดกลุ่มการเรียก API เพื่อลดจํานวนการเชื่อมต่อ HTTP ที่ไคลเอ็นต์ต้องสร้าง
เอกสารนี้เน้นเกี่ยวกับการส่งคําขอแบบกลุ่มโดยการส่งคําขอ HTTP แต่หากคุณใช้ไลบรารีของไคลเอ็นต์ Google เพื่อส่งคําขอแบบกลุ่ม โปรดดูที่ไลบรารีของไคลเอ็นต์'
ภาพรวม
การเชื่อมต่อ HTTP แต่ละครั้งที่ไคลเอ็นต์ทําให้ได้ผลลัพธ์ในค่าใช้จ่ายในการดําเนินการจํานวนหนึ่ง API รายงานประสบการณ์การใช้งาน Google Ads รองรับการทํางานแบบกลุ่ม เพื่อให้ลูกค้าใช้การเรียก API หลายรายการในคําขอ HTTP คําขอเดียวได้
ตัวอย่างของสถานการณ์ที่คุณอาจต้องการใช้กลุ่ม
- คุณเพิ่งเริ่มต้นใช้ API และคุณมีข้อมูลที่จะอัปโหลดมากมาย
- ผู้ใช้มีการเปลี่ยนแปลงข้อมูลขณะที่แอปพลิเคชันของคุณออฟไลน์ (ยกเลิกการเชื่อมต่อจากอินเทอร์เน็ต) ดังนั้นแอปพลิเคชันของคุณจะต้องซิงค์ข้อมูลในเครื่องของตนกับเซิร์ฟเวอร์โดยส่งการอัปเดตและการลบจํานวนมาก
ในแต่ละกรณี คุณจะจัดกลุ่มคําขอเหล่านั้นเป็นคําขอ HTTP รายการเดียวแทนที่จะส่งการเรียกแต่ละครั้งแยกกันได้ คําขอภายในทั้งหมดต้องไปที่ Google API เดียวกัน
คุณจะโทรได้ไม่เกิน 1,000 ครั้งในคําขอกลุ่มเดียว หากต้องการโทรออกมากกว่านั้น ให้ใช้คําขอแบบกลุ่มหลายรายการ
หมายเหตุ: ระบบกลุ่มสําหรับ API รายงานประสบการณ์ใช้งานโฆษณา Google ใช้ไวยากรณ์เดียวกันกับระบบการประมวลผลแบบกลุ่มข้อมูล แต่ความหมายจะแตกต่างกัน
รายละเอียดแบบกลุ่ม
คําขอแบบกลุ่มประกอบด้วยการเรียก API จํานวนมากที่รวมเป็นคําขอ HTTP รายการเดียว ซึ่งจะส่งไปยัง batchPath
ที่ระบุไว้ในเอกสารการค้นพบ API เส้นทางเริ่มต้นคือ /batch/api_name/api_version
ส่วนนี้จะอธิบายไวยากรณ์ของกลุ่มโดยละเอียด และมีตัวอย่างในภายหลัง
หมายเหตุ: ชุดคําขอ n ที่จัดกลุ่มเข้าด้วยกันจะนับเป็นขีดจํากัดการใช้งานเป็นคําขอ n ไม่ใช่คําขอ 1 รายการ คําขอแบบกลุ่มจะแยกออกเป็นชุดคําขอก่อนประมวลผล
รูปแบบคําขอแบบกลุ่ม
คําขอแบบกลุ่มคือคําขอ HTTP มาตรฐานรายการเดียวที่มีการเรียก API รายงานประสบการณ์ใช้งานโฆษณา Google หลายรายการ โดยใช้ประเภทเนื้อหา multipart/mixed
คําขอ HTTP หลักคําขอแต่ละรายการคําขอแต่ละรายการจะมีคําขอ HTTP ที่ฝังอยู่
แต่ละส่วนเริ่มต้นด้วยส่วนหัว HTTP ของ Content-Type: application/http
ของตัวเอง นอกจากนี้ยังอาจมีส่วนหัว Content-ID
ที่ไม่บังคับด้วย อย่างไรก็ตาม ส่วนหัวของส่วนมีไว้เพื่อทําเครื่องหมายจุดเริ่มต้นของส่วนเท่านั้น แยกจากคําขอที่ซ้อนกัน หลังจากที่เซิร์ฟเวอร์แยกคําขอแบบกลุ่มออกเป็นคําขอที่แยกต่างหาก ระบบจะไม่สนใจส่วนหัวของส่วน
ตัวข้อมูลแต่ละส่วนเป็นคําขอ HTTP ที่สมบูรณ์ในตัวเอง โดยมีกริยา, URL, ส่วนหัว และเนื้อหาของตัวเอง คําขอ HTTP ต้องมีเฉพาะส่วนเส้นทางของ URL ไม่อนุญาตให้ใช้ URL แบบเต็มในคําขอแบบกลุ่ม
ส่วนหัว HTTP สําหรับคําขอแบบกลุ่มด้านนอก มีผลกับคําขอทุกรายการในกลุ่ม ยกเว้นส่วนหัว Content-
เช่น Content-Type
หากคุณระบุส่วนหัว HTTP หนึ่งๆ ทั้งในคําขอภายนอกและการเรียกใช้แต่ละครั้ง ค่าของส่วนหัวการโทรแต่ละครั้งจะลบล้างค่าของคําขอกลุ่มนอก' ส่วนหัวสําหรับการโทรแต่ละครั้งมีผลกับการโทรนั้นเท่านั้น
ตัวอย่างเช่น หากคุณระบุส่วนหัว "การให้สิทธิ์" สําหรับการโทรหนึ่งๆ ส่วนหัวดังกล่าวจะมีผลกับการโทรนั้นเท่านั้น หากคุณระบุส่วนหัวการให้สิทธิ์สําหรับคําขอภายนอก ส่วนหัวดังกล่าวจะมีผลกับการเรียกแต่ละรายการทั้งหมด เว้นแต่ส่วนหัวเหล่านั้นจะลบล้างด้วยส่วนหัวการให้สิทธิ์ของตนเอง
เมื่อเซิร์ฟเวอร์ได้รับคําขอแบบกลุ่ม เซิร์ฟเวอร์จะใช้พารามิเตอร์การค้นหาและส่วนหัวด้านนอก (ที่เหมาะสม) กับแต่ละส่วน แล้วจัดการแต่ละส่วนเสมือนว่าเป็นคําขอ HTTP คนละรายการ
การตอบกลับคําขอแบบกลุ่ม
การตอบกลับของเซิร์ฟเวอร์คือการตอบกลับ HTTP มาตรฐานเดียวที่มีประเภทเนื้อหา multipart/mixed
โดยแต่ละส่วนคือการตอบกลับหนึ่งในคําขอในคําขอแบบกลุ่มตามลําดับเดียวกันกับคําขอ
คําขอแต่ละรายการมีการตอบสนอง HTTP ที่สมบูรณ์ ซึ่งรวมถึงส่วนต่างๆ ในคําขอ เช่น รหัสสถานะ ส่วนหัว และเนื้อหา และเหมือนกับส่วนในคําขอ ส่วนหัวการตอบกลับแต่ละรายการจะมีส่วนหัว Content-Type
ที่เป็นตัวทําเครื่องหมายตอนต้นของส่วน
หากส่วนหนึ่งๆ ของคําขอมีส่วนหัว Content-ID
ส่วนที่เกี่ยวข้องของการตอบกลับจะมีส่วนหัว Content-ID
ที่ตรงกัน โดยมีค่าเดิมนําหน้าด้วยสตริง response-
ดังที่แสดงในตัวอย่างต่อไปนี้
หมายเหตุ: เซิร์ฟเวอร์อาจทําการโทรตามลําดับใดก็ได้ โปรดอย่านับการดําเนินการตามลําดับที่คุณระบุ หากต้องการมั่นใจได้ว่าจะมีการโทร 2 ครั้งตามลําดับที่กําหนด คุณจะส่งพร้อมกันในคําขอเดียวไม่ได้ แต่ให้ส่งการโทรครั้งแรกไปเองแทน จากนั้นรอให้คําตอบแรกก่อนที่จะส่งลําดับที่ 2
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้แบบกลุ่มกับ Google Ad Experience Report API
ตัวอย่างคําขอแบบกลุ่ม
POST /batch/v1?key=key HTTP/1.1 Content-Type: multipart/mixed; boundary=batch_aer --batch_aer Content-Type: application/http Content-ID: id1 GET /v1/sites/http%3A%2F%2F/site1%2F HTTP/1.1 --batch_aer Content-Type: application/http Content-ID: id2 GET /v1/sites/http%3A%2F%2F/site2%2F HTTP/1.1 --batch_aer--
ตัวอย่างการตอบกลับแบบกลุ่ม
นี่คือการตอบกลับคําขอตัวอย่างในส่วนก่อนหน้า
HTTP/1.1 200 OK Content-Type: multipart/mixed; boundary=batch_aer --batch_aer Content-Type: application/http Content-ID: response-id1 HTTP/1.1 200 OK Content-Type: application/json { "reviewedSite": "site1", "mobileSummary": { "lastChangeTime": "2019-02-05T09:46:26.521747Z", "betterAdsStatus": "PASSING", "reportUrl": "https://www.google.com/webmasters/tools/ad-experience-mobile?siteUrl=http://site1/", "filterStatus": "OFF" }, "desktopSummary": { "lastChangeTime": "2019-02-07T23:07:29.017206Z", "betterAdsStatus": "FAILING", "enforcementTime": "2018-02-15T15:00:00Z", "reportUrl": "https://www.google.com/webmasters/tools/ad-experience-desktop?siteUrl=http://site1/", "filterStatus": "ON" } } --batch_aer Content-Type: application/http Content-ID: response-id2 HTTP/1.1 200 OK Content-Type: application/json { "reviewedSite": "site2", "mobileSummary": { "lastChangeTime": "2018-03-06T16:06:33.375851Z", "betterAdsStatus": "PASSING", "reportUrl": "https://www.google.com/webmasters/tools/ad-experience-mobile?siteUrl=http://site2/", "filterStatus": "OFF" }, "desktopSummary": { "lastChangeTime": "2018-03-06T16:06:33.375851Z", "betterAdsStatus": "PASSING", "reportUrl": "https://www.google.com/webmasters/tools/ad-experience-desktop?siteUrl=http://site2/", "filterStatus": "OFF" } } --batch_aer--