Cloud Firestore REST API ব্যবহার করুন

যদিও ক্লাউড ফায়ারস্টোর ব্যবহার করার সবচেয়ে সহজ উপায় হল একটি নেটিভ ক্লায়েন্ট লাইব্রেরি ব্যবহার করা, এমন কিছু পরিস্থিতিতে আছে যখন এটি সরাসরি REST API কল করা উপযোগী।

REST API নিম্নলিখিত ব্যবহারের ক্ষেত্রে সহায়ক হতে পারে:

  • ক্লাউড ফায়ারস্টোরে রিসোর্স সীমাবদ্ধ পরিবেশ থেকে অ্যাক্সেস করা, যেমন একটি ইন্টারনেট অফ থিংস (IoT) ডিভাইস, যেখানে একটি সম্পূর্ণ ক্লায়েন্ট লাইব্রেরি চালানো সম্ভব নয়।
  • ডাটাবেস প্রশাসন স্বয়ংক্রিয় করা বা বিস্তারিত ডাটাবেস মেটাডেটা পুনরুদ্ধার করা।

আপনি যদি একটি gRPC-সমর্থিত ভাষা ব্যবহার করেন, REST API এর পরিবর্তে RPC API ব্যবহার করার কথা বিবেচনা করুন।

প্রমাণীকরণ এবং অনুমোদন

প্রমাণীকরণের জন্য, ক্লাউড ফায়ারস্টোর REST API হয় একটি Firebase প্রমাণীকরণ আইডি টোকেন বা একটি Google Identity OAuth 2.0 টোকেন গ্রহণ করে৷ আপনার দেওয়া টোকেন আপনার অনুরোধের অনুমোদনকে প্রভাবিত করে:

  • আপনার অ্যাপ্লিকেশনের ব্যবহারকারীদের কাছ থেকে অনুরোধগুলি প্রমাণীকরণ করতে ফায়ারবেস আইডি টোকেন ব্যবহার করুন। এই অনুরোধগুলির জন্য, একটি অনুরোধ অনুমোদিত কিনা তা নির্ধারণ করতে ক্লাউড ফায়ারস্টোর ক্লাউড ফায়ারস্টোর সুরক্ষা নিয়ম ব্যবহার করে৷

  • আপনার অ্যাপ্লিকেশন থেকে অনুরোধগুলি যেমন ডাটাবেস প্রশাসনের জন্য অনুরোধগুলি প্রমাণীকরণ করতে একটি Google আইডেন্টিটি OAuth 2.0 টোকেন এবং একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করুন৷ এই অনুরোধগুলির জন্য, একটি অনুরোধ অনুমোদিত কিনা তা নির্ধারণ করতে ক্লাউড ফায়ারস্টোর আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করে।

ফায়ারবেস আইডি টোকেন নিয়ে কাজ করা

আপনি দুটি উপায়ে একটি ফায়ারবেস আইডি টোকেন পেতে পারেন:

একজন ব্যবহারকারীর ফায়ারবেস আইডি টোকেন পুনরুদ্ধার করে, আপনি ব্যবহারকারীর পক্ষ থেকে অনুরোধ করতে পারেন।

একটি Firebase আইডি টোকেন দিয়ে প্রমাণীকৃত অনুরোধের জন্য এবং অপ্রমাণিত অনুরোধের জন্য, ক্লাউড ফায়ারস্টোর আপনার ক্লাউড ফায়ারস্টোর নিরাপত্তা নিয়ম ব্যবহার করে একটি অনুরোধ অনুমোদিত কিনা তা নির্ধারণ করে।

Google Identity OAuth 2.0 টোকেন নিয়ে কাজ করা

আপনি একটি Google API ক্লায়েন্ট লাইব্রেরির একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে বা সার্ভার থেকে সার্ভার অ্যাপ্লিকেশনগুলির জন্য OAuth 2.0 ব্যবহার করার ধাপগুলি অনুসরণ করে একটি অ্যাক্সেস টোকেন তৈরি করতে পারেন৷ এছাড়াও আপনি gcloud কমান্ড-লাইন টুল এবং কমান্ড gcloud auth application-default print-access-token দিয়ে একটি টোকেন তৈরি করতে পারেন।

ক্লাউড ফায়ারস্টোর REST API-তে অনুরোধ পাঠানোর জন্য এই টোকেনের নিম্নলিখিত সুযোগ থাকতে হবে:

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

আপনি যদি একটি পরিষেবা অ্যাকাউন্ট এবং একটি Google আইডেন্টিটি OAuth 2.0 টোকেন দিয়ে আপনার অনুরোধগুলিকে প্রমাণীকরণ করেন, Cloud Firestore অনুমান করে যে আপনার অনুরোধগুলি একটি পৃথক ব্যবহারকারীর পরিবর্তে আপনার অ্যাপ্লিকেশনের পক্ষে কাজ করে৷ ক্লাউড ফায়ারস্টোর এই অনুরোধগুলিকে আপনার নিরাপত্তা নিয়ম উপেক্ষা করার অনুমতি দেয়৷ পরিবর্তে, একটি অনুরোধ অনুমোদিত কিনা তা নির্ধারণ করতে ক্লাউড ফায়ারস্টোর IAM ব্যবহার করে।

আপনি ক্লাউড ফায়ারস্টোর আইএএম ভূমিকা নির্ধারণ করে পরিষেবা অ্যাকাউন্টগুলির অ্যাক্সেসের অনুমতিগুলি নিয়ন্ত্রণ করতে পারেন৷

একটি অ্যাক্সেস টোকেন দিয়ে প্রমাণীকরণ করা হচ্ছে

আপনি একটি ফায়ারবেস আইডি টোকেন বা একটি Google আইডেন্টিটি OAuth 2.0 টোকেন পাওয়ার পর, এটিকে ক্লাউড ফায়ারস্টোর এন্ডপয়েন্টে পাস করুন একটি Authorization হেডার হিসাবে সেট করুন Bearer {YOUR_TOKEN}

REST কল করা হচ্ছে

সমস্ত REST API এন্ডপয়েন্ট বেস URL https://firestore.googleapis.com/v1/ এর অধীনে বিদ্যমান।

YOUR_PROJECT_ID প্রকল্পের অধীনে সংগ্রহের cities ID 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 এক্সপ্লোরার ব্যবহার করুন।

v1.projects.databases.documents

নথিতে CRUD ক্রিয়াকলাপগুলি সম্পাদন করুন, যেমন ডেটা যোগে বর্ণিত হয়েছে বা ডেটা গাইড পান

v1.projects.databases.collectionGroups.indexes

সূচীতে কর্ম সম্পাদন করুন যেমন নতুন সূচী তৈরি করা, একটি বিদ্যমান সূচী নিষ্ক্রিয় করা, বা সমস্ত বর্তমান সূচী তালিকাভুক্ত করা। ডেটা স্ট্রাকচার মাইগ্রেশন স্বয়ংক্রিয় করতে বা প্রকল্পগুলির মধ্যে সূচী সিঙ্ক্রোনাইজ করার জন্য দরকারী।

এছাড়াও নথির মেটাডেটা পুনরুদ্ধার সক্ষম করে, যেমন একটি প্রদত্ত নথির জন্য সমস্ত ক্ষেত্র এবং উপ-সংগ্রহের তালিকা।

ত্রুটি কোড

ক্লাউড ফায়ারস্টোরের অনুরোধ সফল হলে, ক্লাউড ফায়ারস্টোর এপিআই একটি HTTP 200 OK স্ট্যাটাস কোড এবং অনুরোধ করা ডেটা প্রদান করে। যখন একটি অনুরোধ ব্যর্থ হয়, ক্লাউড ফায়ারস্টোর API একটি HTTP 4xx বা 5xx স্ট্যাটাস কোড এবং ত্রুটি সম্পর্কে তথ্য সহ একটি প্রতিক্রিয়া প্রদান করে।

নিম্নলিখিত সারণী প্রতিটি ত্রুটি কোডের জন্য প্রস্তাবিত ক্রিয়াগুলির তালিকা করে৷ এই কোডগুলি Cloud Firestore REST এবং RPC API-তে প্রযোজ্য। ক্লাউড ফায়ারস্টোর SDK এবং ক্লায়েন্ট লাইব্রেরিগুলি এই একই ত্রুটি কোডগুলি ফেরত নাও দিতে পারে৷

ক্যানোনিকাল ত্রুটি কোড বর্ণনা সুপারিশকৃত কাজ
ABORTED অনুরোধটি অন্য অনুরোধের সাথে বিরোধপূর্ণ। একটি অ-লেনদেনমূলক প্রতিশ্রুতির জন্য:
অনুরোধটি আবার চেষ্টা করুন বা বিরোধ কমাতে আপনার ডেটা মডেল পুনর্গঠন করুন।

একটি লেনদেনের অনুরোধের জন্য:
সম্পূর্ণ লেনদেন পুনরায় চেষ্টা করুন বা বিতর্ক কমাতে আপনার ডেটা মডেল পুনরায় গঠন করুন।
ALREADY_EXISTS অনুরোধটি এমন একটি নথি তৈরি করার চেষ্টা করেছে যা আগে থেকেই আছে৷ সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।
DEADLINE_EXCEEDED অনুরোধটি পরিচালনাকারী ক্লাউড ফায়ারস্টোর সার্ভার একটি সময়সীমা অতিক্রম করেছে৷ সূচকীয় ব্যাকঅফ ব্যবহার করে পুনরায় চেষ্টা করুন।
FAILED_PRECONDITION অনুরোধটি এর একটি পূর্বশর্ত পূরণ করেনি। উদাহরণস্বরূপ, একটি ক্যোয়ারী অনুরোধের জন্য একটি সূচকের প্রয়োজন হতে পারে যা এখনও সংজ্ঞায়িত করা হয়নি। ব্যর্থ হওয়া পূর্বশর্তের জন্য ত্রুটি প্রতিক্রিয়ার বার্তা ক্ষেত্রটি দেখুন। সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।
INTERNAL ক্লাউড ফায়ারস্টোর সার্ভার একটি ত্রুটি ফিরিয়ে দিয়েছে। এই অনুরোধটি একবারের বেশি চেষ্টা করবেন না।
INVALID_ARGUMENT একটি অনুরোধ পরামিতি একটি অবৈধ মান অন্তর্ভুক্ত করে। ভুল মানের জন্য ত্রুটি প্রতিক্রিয়া বার্তা ক্ষেত্র দেখুন. সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।
NOT_FOUND অনুরোধটি এমন একটি নথি আপডেট করার চেষ্টা করেছে যা বিদ্যমান নেই৷ সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।
PERMISSION_DENIED ব্যবহারকারী এই অনুরোধ করতে অনুমোদিত নয়. সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।
RESOURCE_EXHAUSTED প্রকল্পটি তার কোটা বা অঞ্চল/বহু-অঞ্চল ক্ষমতা অতিক্রম করেছে। আপনি আপনার প্রকল্পের কোটা অতিক্রম করেননি তা যাচাই করুন । আপনি যদি একটি প্রকল্পের কোটা অতিক্রম করে থাকেন, তাহলে সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।

অন্যথায়, সূচকীয় ব্যাকঅফ দিয়ে পুনরায় চেষ্টা করুন।
UNAUTHENTICATED অনুরোধে বৈধ প্রমাণীকরণ শংসাপত্র অন্তর্ভুক্ত করা হয়নি। সমস্যার সমাধান না করে আবার চেষ্টা করবেন না।
UNAVAILABLE ক্লাউড ফায়ারস্টোর সার্ভার একটি ত্রুটি ফিরিয়ে দিয়েছে। সূচকীয় ব্যাকঅফ ব্যবহার করে পুনরায় চেষ্টা করুন।