Cloud Firestore'ü kullanmanın en kolay yolu yerel istemci kitaplıklarından birini kullanmak olsa da REST API'yi doğrudan çağırmanın yararlı olduğu bazı durumlar vardır.
REST API aşağıdaki kullanım alanlarında faydalı olabilir:
- Eksiksiz bir istemci kitaplığı çalıştırmanın mümkün olmadığı şeylerin interneti (IoT) cihazı gibi kaynak kısıtlamalı bir ortamdan Cloud Firestore hizmetine erişme.
- Veritabanı yönetimini otomatikleştirme veya ayrıntılı veritabanı meta verilerini alma.
gRPC destekli bir dil kullanıyorsanız REST API yerine RPC API'yi kullanma seçeneğini değerlendirin.
Kimlik doğrulama ve yetkilendirme
Kimlik doğrulama için Cloud Firestore REST API, Firebase Authentication kimlik jetonunu veya Google Identity OAuth 2.0 jetonunu kabul eder. Sağladığınız jeton, isteğinizin yetkilendirmesini etkiler:
Uygulamanızın kullanıcılarından gelen isteklerin kimliğini doğrulamak için Firebase kimlik jetonlarını kullanın. Cloud Firestore, bu isteklerde bir isteğin yetkilendirilip yetkilendirilmediğini belirlemek için Cloud Firestore Security Rules değerini kullanır.
Uygulamanızdan gelen istekleri (ör. veritabanı yönetimi istekleri) doğrulamak için bir Google Identity OAuth 2.0 jetonu ve hizmet hesabı kullanın. Cloud Firestore, bu isteklerde bir isteğin yetkilendirilip yetkilendirilmediğini belirlemek için Identity and Access Management'ı (IAM) kullanır.
Firebase kimlik jetonlarıyla çalışma
Firebase kimlik jetonu almak için iki yöntem vardır:
- Firebase Authentication REST API'yi kullanarak bir Firebase kimlik jetonu oluşturun.
- Bir kullanıcının Firebase kimlik jetonunu Firebase Authentication SDK'sından alın.
Kullanıcının Firebase kimlik jetonunu alarak kullanıcı adına istek gönderebilirsiniz.
Cloud Firestore, Firebase kimlik jetonuyla kimliği doğrulanmış istekler ve kimliği doğrulanmamış istekler için bir isteğin yetkilendirilmiş olup olmadığını belirlemek üzere Cloud Firestore Security Rules kimliğinizi kullanır.
Google Identity OAuth 2.0 jetonlarıyla çalışma
Google API İstemci Kitaplığı ile birlikte bir hizmet hesabı kullanarak veya Sunucudan Sunucuya Uygulamalar için OAuth 2.0'ı Kullanma başlıklı makaledeki adımları uygulayarak erişim jetonu oluşturabilirsiniz. gcloud
komut satırı aracını ve gcloud auth application-default print-access-token
komutunu kullanarak da jeton oluşturabilirsiniz.
Bu jeton, Cloud Firestore REST API'ye istek göndermek için aşağıdaki kapsama sahip olmalıdır:
https://www.googleapis.com/auth/datastore
İsteklerinizde kimlik doğrulamasını bir hizmet hesabı ve Google Kimlik OAuth 2.0 jetonuyla yaparsanız Cloud Firestore, isteklerinizin bireysel bir kullanıcı yerine uygulamanız adına yapıldığını varsayar. Cloud Firestore, bu isteklerin güvenlik kurallarınızı yoksaymasına izin verir. Bunun yerine Cloud Firestore, bir isteğin yetkilendirilip yetkilendirilmediğini belirlemek için IAM kullanır.
Cloud Firestore IAM rolleri atayarak hizmet hesaplarının erişim izinlerini kontrol edebilirsiniz.
Erişim jetonuyla kimlik doğrulama
Bir Firebase kimlik jetonu veya Google Kimliği OAuth 2.0 jetonu aldıktan sonra, Bearer {YOUR_TOKEN}
olarak ayarlanmış bir Authorization
üstbilgisi olarak Cloud Firestore uç noktalarına iletin.
REST çağrısı yapma
Tüm REST API uç noktaları, https://firestore.googleapis.com/v1/
temel URL'sinin altında bulunur.
YOUR_PROJECT_ID
projesi kapsamındaki cities
koleksiyonunda LA
kimlikli bir dokümanın yolunu oluşturmak için aşağıdaki yapıyı kullanırsınız.
/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA
Bu yola erişmek için temel API URL'siyle birleştirin.
https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA
REST API'yi denemeye başlamanın en iyi yolu, Google Identity OAuth 2.0 jetonlarını otomatik olarak oluşturan ve API'yi incelemenize olanak tanıyan API Gezgini'ni kullanmaktır.
Yöntemler
Aşağıda, en önemli iki yöntem grubunun kısa açıklamaları verilmiştir. Tam liste için REST API referansı bölümüne bakın veya API Gezgini'ni kullanın.
v1.projects.databases.documents
Veri ekleme veya Veri alma kılavuzlarında açıklananlara benzer şekilde, dokümanlar üzerinde CRUD işlemleri gerçekleştirin.
v1.projects.databases.collectionGroups.indexes
Dizinlerde yeni dizin oluşturma, mevcut bir dizini devre dışı bırakma veya mevcut tüm dizinleri listeleme gibi işlemler gerçekleştirebilir. Veri yapısı taşıma işlemlerini otomatikleştirmek veya dizinleri projeler arasında senkronize etmek için kullanışlıdır.
Ayrıca, belirli bir belge için tüm alanların ve alt koleksiyonların listesi gibi belge meta verilerinin alınmasını da sağlar.
Hata Kodları
Bir Cloud Firestore isteği başarılı olduğunda Cloud Firestore API, HTTP 200 OK
durum kodunu ve istenen verileri döndürür. Bir istek başarısız olduğunda Cloud Firestore API, HTTP 4xx
veya 5xx
durum kodu ve hatayla ilgili bilgileri içeren bir yanıt döndürür.
Aşağıdaki tabloda her hata kodu için önerilen işlemler listelenmektedir. Bu kodlar Cloud Firestore REST ve RPC API'leri için geçerlidir. Cloud Firestore SDK'lar ve istemci kitaplıkları aynı hata kodlarını döndürmeyebilir.
Kurallı Hata Kodu | Açıklama | Önerilen işlem |
---|---|---|
ABORTED |
İstek başka bir istekle çakışıyordu. | İşlemsel olmayan bir taahhüt için: İsteği yeniden deneyin veya anlaşmazlığı azaltmak için veri modelinizi yeniden yapılandırın. Bir işlemdeki istekler için: İşlemin tamamını yeniden deneyin veya anlaşmazlığı azaltmak için veri modelinizi yeniden yapılandırın. |
ALREADY_EXISTS |
İstek, zaten mevcut olan bir doküman oluşturmaya çalıştı. | Sorunu düzeltmeden tekrar denemeyin. |
DEADLINE_EXCEEDED |
İsteği işleyen Cloud Firestore sunucusu, son tarihi aştı. | Eksponansiyel geri yükleme kullanarak yeniden deneyin. |
FAILED_PRECONDITION |
İstek, ön koşullarından birini karşılamıyor. Örneğin, bir sorgu isteği henüz tanımlanmamış bir dizin gerektirebilir. Başarısız olan ön koşulun hata yanıtındaki mesaj alanına bakın. | Sorunu düzeltmeden tekrar denemeyin. |
INTERNAL |
Cloud Firestore sunucusu bir hata döndürdü. | Bu isteği bir defadan fazla tekrarlamayın. |
INVALID_ARGUMENT |
Bir istek parametresi geçersiz bir değer içeriyor. Geçersiz değeri, hata yanıtındaki mesaj alanında bulabilirsiniz. | Sorunu düzeltmeden tekrar denemeyin. |
NOT_FOUND |
İstek, mevcut olmayan bir dokümanı güncellemeye çalıştı. | Sorunu düzeltmeden tekrar denemeyin. |
PERMISSION_DENIED |
Kullanıcının bu isteği gönderme yetkisi yok. | Sorunu düzeltmeden tekrar denemeyin. |
RESOURCE_EXHAUSTED |
Proje kotasını veya bölge/çok bölgeli kapasitesini aştı. | Proje kotanızı aşmadığınızdan emin olun. Bir proje kotasını aştıysanız sorunu düzeltmeden yeniden denemeyin. Aksi takdirde, eksponansiyel geri yüklemeyle yeniden deneyin. |
UNAUTHENTICATED |
İstek geçerli kimlik doğrulama kimlik bilgilerini içermiyordu. | Sorunu düzeltmeden tekrar denemeyin. |
UNAVAILABLE |
Cloud Firestore sunucusu hata döndürdü. | Eksponansiyel geri yükleme kullanarak yeniden deneyin. |