استخدام واجهة برمجة تطبيقات Cloud Firestore REST

على الرغم من أنّ أسهل طريقة لاستخدام Cloud Firestore هي استخدام إحدى مكتبات البرامج الأصلية للعملاء، إلا أنّ هناك بعض الحالات التي يكون فيها من المفيد استدعاء REST API مباشرةً.

يمكن أن تكون واجهة REST API مفيدة في حالات الاستخدام التالية:

  • الوصول إلى Cloud Firestore من بيئة محدودة الموارد، مثل جهاز إنترنت الأشياء (IoT)، حيث لا يمكن تشغيل مكتبة عملاء كاملة
  • أتمتة إدارة قاعدة البيانات أو استرداد بيانات تعريف تفصيلية لقاعدة البيانات

إذا كنت تستخدم لغة متوافقة مع gRPC، ننصحك باستخدام RPC API بدلاً من REST API.

المصادقة والتفويض

للمصادقة، تقبل واجهة Cloud Firestore REST API إما رمزًا مميزًا Firebase Authentication أو رمزًا مميزًا لبروتوكول Google Identity OAuth 2.0. يؤثر الرمز المميز الذي تقدّمه في تفويض طلبك:

  • استخدِم رموز تعريف Firebase المميزة لمصادقة الطلبات الواردة من مستخدمي تطبيقك. بالنسبة إلى هذه الطلبات، تستخدم Cloud Firestore Cloud Firestore Security Rules لتحديد ما إذا كان الطلب مُصادقًا عليه.

  • استخدِم رمزًا مميزًا من الإصدار 2.0 من OAuth في Google Identity وحساب خدمة لمصادقة الطلبات من تطبيقك، مثل طلبات إدارة قاعدة البيانات. بالنسبة إلى هذه الطلبات، تستخدم Cloud Firestore إدارة الهوية وإمكانية الوصول (IAM) لتحديد ما إذا كان الطلب مسموحًا به.

التعامل مع رموز التعريف المميزة في Firebase

يمكنك الحصول على رمز مميّز لمعرّف Firebase بطريقتين:

من خلال استرداد رمز تعريف Firebase للمستخدم، يمكنك تقديم طلبات نيابةً عن المستخدم.

بالنسبة إلى الطلبات التي تمّت المصادقة عليها باستخدام رمز مميّز لمعرّف Firebase والطلبات التي لم تتم المصادقة عليها، تستخدم Cloud Firestore Cloud Firestore Security Rules لتحديد ما إذا كان الطلب مسموحًا به.

العمل باستخدام رموز OAuth 2.0 المميزة من Google Identity

يمكنك إنشاء رمز مميّز للوصول باستخدام حساب خدمة مع مكتبة عميل 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 إدارة الهوية وإمكانية الوصول لتحديد ما إذا كان الطلب مصادقًا عليه.

يمكنك التحكّم في أذونات الوصول الخاصة بحسابات الخدمة من خلال منحها Cloud Firestore أدوار "إدارة الهوية وإمكانية الوصول".

المصادقة باستخدام رمز دخول

بعد الحصول على رمز مميز لمعرّف Firebase أو رمز مميز لبروتوكول OAuth 2.0 من Google Identity، مرِّره إلى نقاط نهاية 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 الأساسي لواجهة برمجة التطبيقات.

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

أفضل طريقة لبدء تجربة REST API هي استخدام مستكشف واجهات برمجة التطبيقات الذي ينشئ تلقائيًا رموز OAuth 2.0 المميزة الخاصة بخدمة Google Identity ويتيح لك فحص واجهة برمجة التطبيقات.

الإجراءات

في ما يلي أوصاف موجزة لمجموعتَي الطرق الأكثر أهمية. للحصول على قائمة كاملة، راجِع مرجع REST API أو استخدِم مستكشف واجهات برمجة التطبيقات.

v1.projects.databases.documents

تنفيذ عمليات إنشاء وقراءة وتعديل وحذف على المستندات، على غرار العمليات الموضّحة في دليلَي إضافة البيانات أو الحصول على البيانات

v1.projects.databases.collectionGroups.indexes

تنفيذ إجراءات على الفهارس، مثل إنشاء فهارس جديدة أو إيقاف فهرس حالي أو إدراج جميع الفهارس الحالية وهي مفيدة لأتمتة عمليات نقل بنية البيانات أو مزامنة الفهارس بين المشاريع.

يتيح أيضًا استرداد البيانات الوصفية للمستندات، مثل قائمة جميع الحقول والمجموعات الفرعية لمستند معيّن.

رموز الخطأ

عندما ينجح طلب Cloud Firestore، تعرض واجهة برمجة التطبيقات Cloud Firestore رمز الحالة 200 OK HTTP والبيانات المطلوبة. وعندما يتعذّر إرسال الطلب، تعرض واجهة برمجة التطبيقات Cloud Firestore رمز الحالة 4xx أو 5xx HTTP واستجابة تتضمّن معلومات عن الخطأ.

يعرض الجدول التالي الإجراءات المقترَحة لكل رمز خطأ. تنطبق هذه الرموز على واجهات برمجة التطبيقات Cloud Firestore REST وRPC. وقد لا تعرض Cloud Firestore حِزم تطوير البرامج (SDK) ومكتبات البرامج رموز الخطأ نفسها.

رمز الخطأ القياسي الوصف الإجراء المقترَح
ABORTED تعارض الطلب مع طلب آخر. بالنسبة إلى عمليات التنفيذ غير المعاملاتية:
أعِد محاولة تنفيذ الطلب أو أعِد هيكلة نموذج البيانات للحدّ من التعارض.

بالنسبة إلى الطلبات في إحدى المعاملات:
أعِد محاولة تنفيذ المعاملة بأكملها أو أعِد هيكلة نموذج البيانات للحدّ من التعارض.
ALREADY_EXISTS حاول الطلب إنشاء مستند متوفّر مسبقًا. لا تعِد المحاولة بدون حلّ المشكلة.
DEADLINE_EXCEEDED تجاوز خادم Cloud Firestore الذي يعالج الطلب الموعد النهائي. أعِد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي.
FAILED_PRECONDITION لم يستوفِ الطلب أحد شروطه المسبقة. على سبيل المثال، قد يتطلّب طلب بحث فهرسًا لم يتم تحديده بعد. اطّلِع على حقل الرسالة في ردّ الخطأ لمعرفة الشرط المسبق الذي لم يتم استيفاؤه. لا تعِد المحاولة بدون حلّ المشكلة.
INTERNAL عرَض خادم Cloud Firestore خطأً. لا تعِد محاولة هذا الطلب أكثر من مرة.
INVALID_ARGUMENT تتضمّن مَعلمة الطلب قيمة غير صالحة. راجِع حقل الرسالة في استجابة الخطأ لمعرفة القيمة غير الصالحة. لا تعِد المحاولة بدون حلّ المشكلة.
NOT_FOUND حاول الطلب تعديل مستند غير موجود. لا تعِد المحاولة بدون حلّ المشكلة.
PERMISSION_DENIED غير مسموح للمستخدِم بإرسال هذا الطلب. لا تعِد المحاولة بدون حلّ المشكلة.
RESOURCE_EXHAUSTED تجاوز المشروع إما الحصة أو سعة المنطقة أو المناطق المتعدّدة. تأكَّد من أنّك لم تتجاوز حصة مشروعك. إذا تجاوزت حصة مشروعك، لا تعِد المحاولة بدون حلّ المشكلة.

بخلاف ذلك، أعِد المحاولة مع التراجع الأسي.
UNAUTHENTICATED لم يتضمّن الطلب بيانات اعتماد مصادقة صالحة. لا تعِد المحاولة بدون حلّ المشكلة.
UNAVAILABLE عرَض خادم Cloud Firestore خطأً. أعِد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي.