যদিও Cloud Firestore ব্যবহারের সবচেয়ে সহজ উপায় হল নেটিভ ক্লায়েন্ট লাইব্রেরি ব্যবহার করা, কিছু পরিস্থিতিতে সরাসরি REST API কল করা কার্যকর হয়।
নিম্নলিখিত ব্যবহারের ক্ষেত্রে REST API সহায়ক হতে পারে:
- ইন্টারনেট অফ থিংস (IoT) ডিভাইসের মতো রিসোর্স-সীমাবদ্ধ পরিবেশ থেকে Cloud Firestore অ্যাক্সেস করা, যেখানে একটি সম্পূর্ণ ক্লায়েন্ট লাইব্রেরি চালানো সম্ভব নয়।
- ডাটাবেস প্রশাসন স্বয়ংক্রিয় করা অথবা বিস্তারিত ডাটাবেস মেটাডেটা পুনরুদ্ধার করা।
যদি আপনি gRPC-সমর্থিত ভাষা ব্যবহার করেন, তাহলে REST API-এর পরিবর্তে RPC API ব্যবহার করার কথা বিবেচনা করুন।
প্রমাণীকরণ এবং অনুমোদন
প্রমাণীকরণের জন্য, Cloud Firestore REST API একটি Firebase Authentication আইডি টোকেন অথবা একটি Google Identity OAuth 2.0 টোকেন গ্রহণ করে। আপনার দেওয়া টোকেন আপনার অনুরোধের অনুমোদনকে প্রভাবিত করে:
আপনার অ্যাপ্লিকেশন ব্যবহারকারীদের অনুরোধগুলি প্রমাণীকরণ করতে Firebase ID টোকেন ব্যবহার করুন। এই অনুরোধগুলির জন্য, Cloud Firestore কোনও অনুরোধ অনুমোদিত কিনা তা নির্ধারণ করতে Cloud Firestore Security Rules ব্যবহার করে।
আপনার অ্যাপ্লিকেশন থেকে অনুরোধগুলি, যেমন ডাটাবেস প্রশাসনের অনুরোধগুলি প্রমাণীকরণের জন্য একটি Google Identity OAuth 2.0 টোকেন এবং একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করুন। এই অনুরোধগুলির জন্য, Cloud Firestore কোনও অনুরোধ অনুমোদিত কিনা তা নির্ধারণ করতে আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করে।
ফায়ারবেস আইডি টোকেন নিয়ে কাজ করা
আপনি দুটি উপায়ে একটি Firebase ID টোকেন অর্জন করতে পারেন:
- Firebase Authentication REST API ব্যবহার করে একটি Firebase ID টোকেন তৈরি করুন ।
- একটি Firebase Authentication SDK থেকে একজন ব্যবহারকারীর Firebase ID টোকেন পুনরুদ্ধার করুন ।
একজন ব্যবহারকারীর Firebase ID টোকেন পুনরুদ্ধার করে, আপনি ব্যবহারকারীর পক্ষ থেকে অনুরোধ করতে পারেন।
ফায়ারবেস আইডি টোকেন দিয়ে প্রমাণীকরণ করা অনুরোধ এবং অননুমোদিত অনুরোধের জন্য, 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 ID টোকেন অথবা Google Identity OAuth 2.0 টোকেন পাওয়ার পর, Bearer {YOUR_TOKEN} এ সেট করা Authorization হেডার হিসেবে এটি Cloud Firestore এন্ডপয়েন্টে পাঠান।
REST কল করা হচ্ছে
সমস্ত REST API এন্ডপয়েন্টগুলি https://firestore.googleapis.com/v1/ বেস URL এর অধীনে বিদ্যমান।
YOUR_PROJECT_ID প্রকল্পের অধীনে সংগ্রহ cities LA আইডি সহ একটি নথির পথ তৈরি করতে আপনাকে নিম্নলিখিত কাঠামোটি ব্যবহার করতে হবে।
/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA
এই পথের সাথে ইন্টারঅ্যাক্ট করতে, এটিকে বেস API URL এর সাথে একত্রিত করুন।
https://firestore.googleapis.com/v1/projects/YOUR_PROJECT_ID/databases/(default)/documents/cities/LA
REST API নিয়ে পরীক্ষা-নিরীক্ষা শুরু করার সর্বোত্তম উপায় হল API Explorer ব্যবহার করা, যা স্বয়ংক্রিয়ভাবে Google Identity OAuth 2.0 টোকেন তৈরি করে এবং আপনাকে API পরীক্ষা করার অনুমতি দেয়।
পদ্ধতি
নীচে দুটি গুরুত্বপূর্ণ পদ্ধতি গ্রুপের সংক্ষিপ্ত বিবরণ দেওয়া হল। সম্পূর্ণ তালিকার জন্য, REST API রেফারেন্স দেখুন অথবা API Explorer ব্যবহার করুন।
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 এবং 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 সার্ভারটি একটি ত্রুটি ফেরত দিয়েছে। | সূচকীয় ব্যাকঅফ ব্যবহার করে পুনরায় চেষ্টা করুন। |