ใช้ Cloud Firestore REST API

แม้ว่าวิธีที่ง่ายที่สุดในการใช้ Cloud Firestore คือการใช้ไลบรารีของไคลเอ็นต์แบบเนทีฟ แต่ก็มีบางสถานการณ์ที่การเรียก REST API โดยตรงจะมีประโยชน์

REST API อาจมีประโยชน์ในกรณีการใช้งานต่อไปนี้

  • การเข้าถึง Cloud Firestore จากสภาพแวดล้อมที่มีข้อจำกัดด้านทรัพยากร เช่น อุปกรณ์ Internet of Things (IoT) ซึ่งไม่สามารถเรียกใช้ไลบรารีของไคลเอ็นต์ที่สมบูรณ์ได้
  • การทำให้การดูแลระบบฐานข้อมูลเป็นไปโดยอัตโนมัติหรือการดึงข้อมูลเมตาของฐานข้อมูลแบบละเอียด

หากคุณใช้ภาษาที่รองรับ gRPC ให้พิจารณาใช้ RPC API แทน REST API

การตรวจสอบสิทธิ์และการให้สิทธิ์

สำหรับการตรวจสอบสิทธิ์ Cloud Firestore REST API ยอมรับโทเค็นรหัส Firebase Authentication หรือโทเค็น Google Identity OAuth 2.0 โทเค็นที่คุณระบุจะส่งผลต่อการให้สิทธิ์ของคำขอ

  • ใช้โทเค็นรหัส Firebase เพื่อตรวจสอบสิทธิ์คำขอจากผู้ใช้แอปพลิเคชัน สำหรับคำขอเหล่านี้ Cloud Firestore ใช้ Cloud Firestore Security Rules เพื่อพิจารณาว่าคำขอ ได้รับอนุญาตหรือไม่

  • ใช้โทเค็น Google Identity OAuth 2.0 และ บัญชีบริการเพื่อตรวจสอบสิทธิ์คำขอจาก แอปพลิเคชัน เช่น คำขอการดูแลระบบฐานข้อมูล สำหรับคำขอเหล่านี้ Cloud Firestore จะใช้ Identity and Access Management (IAM) เพื่อพิจารณาว่า คำขอได้รับอนุญาตหรือไม่

การใช้โทเค็นรหัส Firebase

คุณสามารถรับโทเค็นรหัส Firebase ได้ 2 วิธีดังนี้

การดึงโทเค็นรหัส Firebase ของผู้ใช้จะช่วยให้คุณส่งคำขอในนามของผู้ใช้ได้

สำหรับคำขอที่ตรวจสอบสิทธิ์ด้วยโทเค็นรหัส Firebase และคำขอที่ไม่ได้ตรวจสอบสิทธิ์ Cloud Firestore จะใช้ Cloud Firestore Security Rules เพื่อพิจารณาว่าคำขอได้รับ อนุญาตหรือไม่

การใช้โทเค็น Google Identity OAuth 2.0

คุณสามารถสร้างโทเค็นเพื่อการเข้าถึงได้โดยใช้ บัญชีบริการกับ ไลบรารีของไคลเอ็นต์ Google API หรือทำตามขั้นตอนใน การใช้ OAuth 2.0 สำหรับแอปพลิเคชันแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์ นอกจากนี้ คุณ ยังสร้างโทเค็นด้วยเครื่องมือบรรทัดคำสั่ง gcloud และ คำสั่ง gcloud auth application-default print-access-token ได้ด้วย

โทเค็นนี้ต้องมีขอบเขตต่อไปนี้เพื่อส่งคำขอไปยัง Cloud Firestore REST API:

  • https://www.googleapis.com/auth/datastore

หากคุณตรวจสอบสิทธิ์คำขอด้วยบัญชีบริการและโทเค็น Google Identity OAuth 2.0 Cloud Firestore จะถือว่าคำขอของคุณดำเนินการในนาม ของแอปพลิเคชันแทนที่จะเป็นผู้ใช้แต่ละราย Cloud Firestore อนุญาตให้ คำขอเหล่านี้ละเว้นกฎความปลอดภัย แต่ Cloud Firestore จะใช้ IAM เพื่อพิจารณาว่าคำขอได้รับอนุญาตหรือไม่

คุณสามารถควบคุมสิทธิ์เข้าถึงของบัญชีบริการได้โดยการกำหนด Cloud Firestoreบทบาท IAM

การตรวจสอบสิทธิ์ด้วยโทเค็นเพื่อการเข้าถึง

หลังจากได้รับโทเค็นรหัส Firebase หรือโทเค็น Google Identity OAuth 2.0 แล้ว ให้ส่งโทเค็นไปยังปลายทางของ Cloud Firestore เป็นส่วนหัว Authorization ที่ตั้งค่าเป็น Bearer {YOUR_TOKEN}

การเรียก REST

ปลายทาง REST API ทั้งหมดอยู่ใน URL ฐาน https://firestore.googleapis.com/v1/

หากต้องการสร้างเส้นทางไปยังเอกสารที่มีรหัส LA ในคอลเล็กชัน cities ภายใต้โปรเจ็กต์ YOUR_PROJECT_ID คุณจะต้องใช้โครงสร้างต่อไปนี้

/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA

หากต้องการโต้ตอบกับเส้นทางนี้ ให้รวมเส้นทางกับ URL ฐานของ API

https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA

วิธีที่ดีที่สุดในการเริ่มต้นทดลองใช้ REST API คือการใช้ API Explorer ซึ่งจะสร้างโทเค็น Google Identity OAuth 2.0 โดยอัตโนมัติและช่วยให้คุณตรวจสอบ API ได้

เมธอด

ด้านล่างนี้คือคำอธิบายสั้นๆ เกี่ยวกับกลุ่มเมธอดที่สำคัญที่สุด 2 กลุ่ม ดูรายการทั้งหมดได้ที่ เอกสารอ้างอิง REST API หรือใช้ โปรแกรมสำรวจ API

v1.projects.databases.documents

ดำเนินการ CRUD กับเอกสาร ซึ่งคล้ายกับที่ระบุไว้ใน คู่มือการเพิ่มข้อมูล หรือ รับข้อมูล

v1.projects.databases.collectionGroups.indexes

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

นอกจากนี้ยังช่วยให้ดึงข้อมูลเมตาของเอกสารได้ เช่น รายการฟิลด์และคอลเล็กชันย่อยทั้งหมดสำหรับเอกสารที่ระบุ

รหัสข้อผิดพลาด

เมื่อคำขอ Cloud Firestore สำเร็จ API Cloud Firestore จะแสดงรหัสสถานะ HTTP 200 OK และข้อมูลที่ขอ เมื่อคำขอไม่สำเร็จ Cloud Firestore API จะแสดง รหัสสถานะ HTTP 4xx หรือ 5xx และการตอบกลับพร้อมข้อมูลเกี่ยวกับ ข้อผิดพลาด

ตารางต่อไปนี้แสดงการดำเนินการที่แนะนำสำหรับรหัสข้อผิดพลาดแต่ละรายการ รหัสเหล่านี้ใช้ กับ Cloud Firestore REST และ RPC API Cloud Firestore SDK และไลบรารีของไคลเอ็นต์อาจไม่แสดงรหัสข้อผิดพลาดเดียวกัน

รหัสข้อผิดพลาด Canonical คำอธิบาย การดำเนินการที่แนะนำ
ABORTED คำขอขัดแย้งกับคำขออื่น สำหรับการคอมมิตที่ไม่ใช่ธุรกรรม
ลองส่งคำขออีกครั้งหรือปรับโครงสร้างโมเดลข้อมูลเพื่อลดการแย่งกัน

สำหรับคำขอในธุรกรรม
ลองส่งธุรกรรมทั้งหมดอีกครั้งหรือปรับโครงสร้างโมเดลข้อมูลเพื่อลดการแย่งกัน
ALREADY_EXISTS คำขอพยายามสร้างเอกสารที่มีอยู่แล้ว อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา
DEADLINE_EXCEEDED เซิร์ฟเวอร์ Cloud Firestore ที่จัดการคำขอเกินกำหนดเวลา ลองอีกครั้งโดยใช้ Exponential Backoff
FAILED_PRECONDITION คำขอไม่เป็นไปตามเงื่อนไขเบื้องต้นข้อใดข้อหนึ่ง เช่น คำขอค้นหาอาจต้องใช้ดัชนีที่ยังไม่ได้กำหนด ดูฟิลด์ข้อความในการตอบกลับข้อผิดพลาดสำหรับเงื่อนไขเบื้องต้นที่ไม่ผ่าน อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา
INTERNAL เซิร์ฟเวอร์ Cloud Firestore แสดงข้อผิดพลาด อย่าลองส่งคำขอนี้อีกครั้ง
INVALID_ARGUMENT พารามิเตอร์คำขอมีค่าไม่ถูกต้อง ดูฟิลด์ข้อความในการตอบกลับข้อผิดพลาดสำหรับค่าไม่ถูกต้อง อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา
NOT_FOUND คำขอพยายามอัปเดตเอกสารที่ไม่มีอยู่ อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา
PERMISSION_DENIED ผู้ใช้ไม่ได้รับอนุญาตให้ส่งคำขอนี้ อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา
RESOURCE_EXHAUSTED โปรเจ็กต์เกินโควต้าหรือความจุของภูมิภาค/หลายภูมิภาค ตรวจสอบว่าคุณไม่ได้ใช้โควต้าโปรเจ็กต์เกิน หากใช้โควต้าโปรเจ็กต์เกิน อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา

มิฉะนั้น ให้ลองอีกครั้งโดยใช้ Exponential Backoff
UNAUTHENTICATED คำขอไม่มีข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่ถูกต้อง อย่าลองอีกครั้งโดยไม่แก้ไขปัญหา
UNAVAILABLE เซิร์ฟเวอร์ Cloud Firestore แสดงข้อผิดพลาด ลองอีกครั้งโดยใช้ Exponential Backoff