ย้ายข้อมูลผลิตภัณฑ์

Merchant API ขอแนะนำวิธีที่แข็งแกร่งและใช้งานง่ายยิ่งขึ้นในการจัดการข้อมูลผลิตภัณฑ์ การเปลี่ยนแปลงหลักคือการแยกข้อมูลสินค้าออกเป็น 2 แหล่งข้อมูลที่แตกต่างกัน ได้แก่ ProductInput สำหรับการส่งข้อมูล และ Product สำหรับการดูเวอร์ชันสุดท้ายที่ประมวลผลแล้ว ซึ่งรวมถึงสถานะและปัญหาของผลิตภัณฑ์ โครงสร้างใหม่นี้ ช่วยให้ได้รับประสบการณ์ที่คาดการณ์ได้และโปร่งใสมากขึ้น

คู่มือนี้จะอธิบายความแตกต่างที่สำคัญเพื่อช่วยคุณย้ายข้อมูลการผสานรวมจาก Content API for Shopping ดูคำแนะนำแบบละเอียดเกี่ยวกับการใช้ ฟีเจอร์ใหม่ได้ที่ จัดการผลิตภัณฑ์

ความแตกต่างที่สำคัญ

ต่อไปนี้คือการเปลี่ยนแปลงที่สำคัญที่สุดเกี่ยวกับวิธีจัดการผลิตภัณฑ์ใน Merchant API เมื่อเทียบกับ Content API for Shopping

  • แหล่งข้อมูลเฉพาะสำหรับข้อมูลที่ป้อนและข้อมูลที่ประมวลผลแล้ว: Merchant API จะแบ่งการจัดการผลิตภัณฑ์ออกเป็น 2 แหล่งข้อมูล คุณสามารถใช้แหล่งข้อมูล ProductInput เพื่อแทรก อัปเดต และลบข้อมูลสินค้าได้ และใช้แหล่งข้อมูลแบบอ่านอย่างเดียว Product เพื่อดูผลิตภัณฑ์ขั้นสุดท้ายหลังจากที่ Google ประมวลผลข้อมูลที่ป้อน ใช้กฎ และรวมข้อมูลจากแหล่งข้อมูลเสริม

  • การเข้ารหัสชื่อผลิตภัณฑ์: คุณใช้การเข้ารหัส base64url แบบไม่เพิ่ม Padding (RFC 4648 ส่วนที่ 5) สำหรับทั้งฟิลด์ ProductInput.name และ Product.name ได้ ในกรณีที่ชื่อผลิตภัณฑ์มีอักขระที่ใช้โดย Merchant API หรืออักขระที่สงวนไว้สำหรับ URL การเข้ารหัสเป็นข้อบังคับ ตัวอย่างเช่น คุณต้อง เข้ารหัสชื่อผลิตภัณฑ์หากมีอักขระต่อไปนี้

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • สถานะผลิตภัณฑ์ที่ผสานรวม: ระบบจะนำบริการ productstatuses ออก ตอนนี้ปัญหาการตรวจสอบผลิตภัณฑ์และสถานะปลายทางจะรวมอยู่ในทรัพยากร Product โดยตรงภายในฟิลด์ productStatus ซึ่งจะช่วยให้การดึงข้อมูลง่ายขึ้น

  • การอัปเดตผลิตภัณฑ์ที่คาดการณ์ได้: วิธีการใหม่ productInputs.patch จะแก้ไขอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจงโดยตรง ซึ่งเป็นการปรับปรุงที่สำคัญเมื่อเทียบกับ Content API for Shopping ซึ่งการอัปเดตอาจถูกเขียนทับโดยการอัปโหลดฟีดอื่นๆ โดยไม่คาดคิด ใน Merchant API การอัปเดตจะยังคงอยู่จนกว่าจะมีการอัปเดตหรือลบอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจงนั้นอีกครั้ง ระบบจะใช้การอัปเดตผลิตภัณฑ์กับทรัพยากร ProductInput แทนที่จะใช้กับทรัพยากร Product ที่ประมวลผลแล้ว

  • เลือกแหล่งข้อมูลเพื่อการจัดการข้อมูลที่สะอาดขึ้น: productInputs การดำเนินการเขียนทั้งหมดต้องมีพารามิเตอร์การค้นหา dataSource ซึ่งจะทำให้ ระบุแหล่งข้อมูลที่คุณกำลังแก้ไขได้อย่างชัดเจน ซึ่งจะมีประโยชน์อย่างยิ่งหาก คุณมีแหล่งข้อมูลหลายแหล่งที่ให้ข้อมูล

  • ตัวระบุทรัพยากรใหม่: ตอนนี้ระบบจะระบุผลิตภัณฑ์ด้วยทรัพยากร RESTful name แทนฟิลด์ id รูปแบบคือ accounts/{account}/products/{product}

  • ไม่มีการประมวลผลแบบกลุ่มที่กำหนดเอง: วิธี custombatch จะใช้ไม่ได้อีกต่อไป คุณใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP เพื่อส่งคำขอหลายรายการในการเรียก HTTP เดียวได้

หลักเกณฑ์ของแหล่งข้อมูลระหว่างการย้ายข้อมูล

ก่อนที่จะย้ายข้อมูลแหล่งข้อมูล เราขอแนะนำอย่างยิ่งให้คุณ เลือกกลยุทธ์แหล่งข้อมูล

โปรดทําตามคําแนะนําต่อไปนี้เพื่อให้การย้ายข้อมูลเป็นไปอย่างราบรื่นและป้องกันปัญหาต่างๆ เช่น การขโมยข้อเสนอ

  • เติมข้อมูลในฐานข้อมูล: แทนที่จะเรียกใช้ dataSources.list ก่อนการดำเนินการกับผลิตภัณฑ์ทุกครั้ง เราขอแนะนำอย่างยิ่งให้คุณเติมข้อมูลในฐานข้อมูลภายในเพียงครั้งเดียว เพิ่มdataSourceฟิลด์ชื่อลงใน บันทึกผลิตภัณฑ์แต่ละรายการเพื่อให้คุณระบุตัวระบุที่ถูกต้องได้โดยตรงใน คำขอ

  • รวมและใช้แหล่งข้อมูลสำหรับป้ายกำกับและภาษาใดก็ได้ Merchant API ช่วยให้คุณสร้างแหล่งข้อมูลได้โดยไม่ต้องระบุ ป้ายกำกับและภาษา จึงช่วยให้แทรกสินค้าที่มี ป้ายกำกับและภาษาของแหล่งข้อมูลใดก็ได้ได้ โปรดพิจารณาใช้แหล่งข้อมูลเดียวสำหรับ ป้ายกำกับและภาษาใดก็ได้

  • ปกป้องผลิตภัณฑ์: หากใช้กฎแหล่งข้อมูล ให้เรียกใช้ products.get เพื่อค้นหา dataSource ที่แน่นอนซึ่งเชื่อมโยงกับผลิตภัณฑ์ก่อนที่จะอัปเดตหรือ ลบผลิตภัณฑ์ เพื่อให้มั่นใจว่าคุณกำลังแก้ไขแหล่งที่มาที่ต้องการและ ป้องกันการขโมยข้อเสนอโดยไม่ตั้งใจ

คำขอ

ส่วนนี้จะเปรียบเทียบรูปแบบคำขอสำหรับ Content API for Shopping และ Merchant API

รายละเอียดสำหรับคำขอ Content API for Shopping Merchant API
ซื้อผลิตภัณฑ์ GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
แสดงรายการสินค้า GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
แทรกผลิตภัณฑ์ POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert
อัปเดตผลิตภัณฑ์ PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
ลบผลิตภัณฑ์ DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput}
ดูสถานะผลิตภัณฑ์ GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product}
แสดงรายการสถานะผลิตภัณฑ์ GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products
จัดกลุ่มคำขอหลายรายการ POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch ใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP

รหัสระบุ

รูปแบบของตัวระบุผลิตภัณฑ์มีการเปลี่ยนแปลงใน Merchant API เป็นชื่อทรัพยากร REST มาตรฐาน

คำอธิบายตัวระบุ Content API for Shopping Merchant API
ID ผลิตภัณฑ์ สตริงที่ประกอบด้วยกลุ่มซึ่งคั่นด้วยเครื่องหมายโคลอน (:)
รูปแบบ: channel:contentLanguage:targetCountry:offerId หรือ channel:contentLanguage:feedLabel:offerId
ตัวอย่าง: online:en:US:sku123
สตริงของทรัพยากร REST name
รูปแบบ: accounts/{account}/products/{product} โดยที่ {product} คือ contentLanguage~feedLabel~offerId
ตัวอย่าง: accounts/12345/products/en~US~sku123
การเข้ารหัส: การเข้ารหัส base64url ที่ไม่มีการเพิ่ม Padding ที่แนะนำและต้องระบุในกรณีของรหัสผลิตภัณฑ์ที่มีอักขระที่ใช้โดย Merchant API หรืออักขระที่สงวนไว้สำหรับ URL

เมธอด

ตารางนี้แสดงเมธอด Content API for Shopping และเมธอดที่เทียบเท่าใน Merchant API

เมธอด Content API for Shopping เมธอดของ Merchant API ความพร้อมใช้งานและหมายเหตุ
products.get products.get ดึงข้อมูลผลิตภัณฑ์สุดท้ายที่ประมวลผลแล้ว
products.list products.list แสดงผลิตภัณฑ์สุดท้ายที่ประมวลผลแล้ว
products.insert productInputs.insert แทรกอินพุตผลิตภัณฑ์ ต้องมี dataSource
products.update productInputs.patch ลักษณะการทำงานแตกต่างกันอย่างมาก โดยจะอัปเดตอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจงและคงอยู่
products.delete productInputs.delete ลบอินพุตผลิตภัณฑ์ที่เฉพาะเจาะจง ต้องมี dataSource
products.custombatch ไม่พร้อมใช้งาน ใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP
productstatuses.get products.get ระบบนำบริการ productstatuses ออกแล้ว ตอนนี้ข้อมูลสถานะเป็นส่วนหนึ่งของทรัพยากร Product แล้ว
productstatuses.list products.list ระบบนำบริการ productstatuses ออกแล้ว ตอนนี้ข้อมูลสถานะเป็นส่วนหนึ่งของทรัพยากร Product แล้ว
productstatuses.custombatch ไม่พร้อมใช้งาน ใช้คำขอแบบไม่พร้อมกันหรือการจัดกลุ่ม HTTP

การเปลี่ยนแปลงฟิลด์โดยละเอียด

ตารางนี้ไฮไลต์ฟิลด์สำคัญที่มีการเปลี่ยนแปลง เพิ่ม หรือนำออก ใน Merchant API

Content API for Shopping Merchant API คำอธิบาย
id name ตอนนี้ตัวระบุหลักสำหรับผลิตภัณฑ์คือทรัพยากร REST name การเข้ารหัส base64url ที่ไม่มีการเพิ่ม Padding ขอแนะนำและต้องระบุในกรณีของชื่อผลิตภัณฑ์ที่มีอักขระที่ใช้โดย Merchant API หรืออักขระที่สงวนไว้สำหรับ URL
แอตทริบิวต์ข้อกำหนดในการจัดทำข้อมูลสินค้าผลิตภัณฑ์ระดับบนสุด (เช่น title, price, link) วัตถุ productAttributes รายการ แอตทริบิวต์ผลิตภัณฑ์ เช่น title, price และ link จะไม่ใช่ฟิลด์ระดับบนสุดอีกต่อไป ตอนนี้ระบบจะจัดกลุ่มไว้ในออบเจ็กต์ productAttributes ทั้งในทรัพยากร Product และ ProductInput ซึ่งจะช่วยให้โครงสร้างทรัพยากรมีความสะอาดและเป็นระเบียบมากขึ้น
targetCountry feedLabel ตอนนี้ชื่อทรัพยากรใช้ feedLabel แทน targetCountry เพื่อให้สอดคล้องกับฟังก์ชันการทำงานของ Merchant Center
feedId dataSource (พารามิเตอร์การค้นหา) ตอนนี้dataSourceชื่อเป็นพารามิเตอร์การค้นหาที่จำเป็นสำหรับเมธอดเขียน productInputs ทั้งหมด (insert, update, delete)
channel ไม่พร้อมใช้งาน ใช้ legacy_local สำหรับผลิตภัณฑ์ในร้านเท่านั้น ฟิลด์ channel ไม่มีอยู่ใน Merchant API อีกต่อไป ผลิตภัณฑ์ที่มีช่องทาง LOCAL ใน Content API for Shopping ควรตั้งค่าฟิลด์ legacy_local เป็นจริงแทน
ไม่พร้อมใช้งาน versionNumber ฟิลด์ใหม่ที่ไม่บังคับใน ProductInput ซึ่งใช้เพื่อป้องกันการแทรกที่ไม่เป็นไปตามลำดับลงในแหล่งข้อมูลหลัก
string ฟิลด์ประเภทที่มีชุดค่าที่กำหนด enum ฟิลด์ประเภทที่มีชุดค่าที่กำหนด ฟิลด์ภายในแอตทริบิวต์ผลิตภัณฑ์ที่มีชุดค่าที่กำหนด (เช่น excluded_destinations, availability) จะเป็นประเภท enum แล้ว