أسهل طريقة لاستخدام Cloud Firestore هي استخدام إحدى مكتبات العميل الأصلية، ولكن في بعض الحالات، يكون من المفيد طلب بيانات من REST API مباشرةً.
يمكن أن يكون REST API مفيدًا في حالات الاستخدام التالية:
- الوصول إلى Cloud Firestore من بيئة محدودة الموارد، مثل جهاز إنترنت الأشياء (IoT)، حيث لا يمكن تشغيل مكتبة عميل كاملة.
- أتمتة إدارة قاعدة البيانات أو استرداد بيانات وصفية مفصّلة لقاعدة البيانات
إذا كنت تستخدم لغة متوافقة مع gRPC، ننصحك باستخدام RPC API بدلاً من REST API.
المصادقة والتفويض
للمصادقة، يقبل Cloud Firestore REST API إما رمز تعريف Firebase Authentication أو رمز OAuth 2.0 من "هوية Google". ويؤثر الرمز الذي تقدّمه في تفويض طلبك:
استخدِم رموز تعريف Firebase لمصادقة الطلبات الواردة من مستخدمي تطبيقك. بالنسبة إلى هذه الطلبات، يستخدم Cloud Firestore Cloud Firestore Security Rules لتحديد ما إذا كان الطلب مسموحًا به.
استخدِم رمز OAuth 2.0 من "هوية Google" وحساب خدمة لمصادقة الطلبات الواردة من تطبيقك، مثل طلبات إدارة قاعدة البيانات. بالنسبة إلى هذه الطلبات، Cloud Firestore يستخدم خدمة "إدارة الهوية والوصول" (IAM) لتحديد ما إذا كان الطلب مسموحًا به.
التعامل مع رموز تعريف Firebase
يمكنك الحصول على رمز تعريف Firebase بطريقتَين:
- إنشاء رمز تعريف Firebase باستخدام Firebase Authentication REST API.
- استرداد رمز تعريف Firebase الخاص بالمستخدم من Firebase Authentication حزمة تطوير البرامج (SDK).
من خلال استرداد رمز تعريف Firebase الخاص بالمستخدم، يمكنك إرسال طلبات نيابةً عن المستخدم.
بالنسبة إلى الطلبات التي تتم مصادقتها باستخدام رمز تعريف Firebase والطلبات غير المصادَق عليها ، يستخدم Cloud Firestore قواعد أمان Cloud Firestore Cloud Firestore Security Rules لتحديد ما إذا كان الطلب مسموحًا به.
التعامل مع رموز OAuth 2.0 من "هوية Google"
يمكنك إنشاء رمز الدخول باستخدام
حساب الخدمة مع
Google API Client Library
أو باتّباع الخطوات الواردة في
استخدام OAuth 2.0 لتطبيقات من خادم إلى خادم. يمكنك أيضًا إنشاء رمز باستخدام أداة سطر الأوامر gcloud والأمر gcloud auth application-default print-access-token.
يجب أن يتضمّن هذا الرمز النطاق التالي لإرسال طلبات إلى الـ Cloud Firestore REST API:
https://www.googleapis.com/auth/datastore
إذا صادقت طلباتك باستخدام حساب خدمة ورمز OAuth 2.0 من "هوية Google" ، يفترض Cloud Firestore أنّ طلباتك يتم إرسالها نيابةً عن تطبيقك بدلاً من مستخدم فردي. Cloud Firestore يسمح لهذه الطلبات بتجاهل قواعد الأمان. بدلاً من ذلك، Cloud Firestore يستخدم IAM لتحديد ما إذا كان الطلب مسموحًا به.
يمكنك التحكّم في أذونات الوصول لحسابات الخدمة من خلال منح Cloud Firestore أدوار IAM.
المصادقة باستخدام رمز الدخول
بعد الحصول على رمز تعريف Firebase أو رمز OAuth 2.0 من "هوية Google"
، مرِّره إلى نقاط نهاية 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" ويسمح لك بفحص واجهة برمجة التطبيقات.
الإجراءات
في ما يلي أوصاف موجزة لمجموعتَي الإجراءات الأكثر أهمية. للاطّلاع على قائمة كاملة ، يُرجى مراجعة مرجع REST API أو استخدام مستكشف واجهات برمجة التطبيقات.
v1.projects.databases.documents
يمكنك إجراء عمليات CRUD على المستندات، على غرار العمليات الموضّحة في الـ أدلّة إضافة البيانات أو الحصول على البيانات.
v1.projects.databases.collectionGroups.indexes
يمكنك إجراء عمليات على الفهارس، مثل إنشاء فهارس جديدة أو إيقاف فهرس حالي أو عرض جميع الفهارس الحالية. هذه العمليات مفيدة لأتمتة عمليات نقل بنية البيانات أو مزامنة الفهارس بين المشاريع.
تتيح هذه العمليات أيضًا استرداد البيانات الوصفية للمستندات، مثل قائمة بجميع الحقول والمجموعات الفرعية لمستند معيّن.
رموز الخطأ
عندما ينجح طلب Cloud Firestore، تعرض
Cloud Firestore API رمز حالة HTTP 200 OK والبيانات المطلوبة. عندما يتعذّر إرسال طلب، تعرض Cloud Firestore API رمز حالة
HTTP 4xx أو 5xx واستجابة تتضمّن معلومات عن
الخطأ.
يعرض الجدول التالي الإجراءات المقترَحة لكل رمز خطأ. تنطبق هذه الرموز على Cloud Firestore REST API وRPC API. قد لا تعرض 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 خطأً. | أعِد المحاولة باستخدام خوارزمية الرقود الأسي الثنائي. |