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 |
|---|---|---|
| รหัสผลิตภัณฑ์ | สตริงที่ประกอบด้วยส่วนต่างๆ ที่คั่นด้วยโคลอน (:) รูปแบบ: 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 |
ตอนนี้ตัวระบุหลักสำหรับสินค้าคือ name ของแหล่งข้อมูล REST ขอแนะนำการเข้ารหัส 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 แล้ว |