GraphQL এর একটি সাধারণ API এমনভাবে কাজ করে যে, ক্লায়েন্টরা নির্দিষ্ট কুয়েরি পাঠিয়ে তাদের প্রয়োজনীয় ডেটা পেতে পারে এবং সার্ভার সেই অনুযায়ী ডেটা প্রদান করে। একটি সাধারণ GraphQL API এর মধ্যে তিনটি মূল অংশ থাকে: স্কিমা (Schema), কুয়েরি (Query), এবং মিউটেশন (Mutation)। এই API ক্লায়েন্টকে নমনীয়তা এবং কার্যকারিতা প্রদান করে, যেখানে শুধু প্রয়োজনীয় ডেটা অনুসন্ধান করা হয়, অতিরিক্ত ডেটা ফেরত আসে না।
একটি সাধারণ GraphQL API কিভাবে কাজ করে?
স্কিমা (Schema):
GraphQL API এর স্কিমা একটি চুক্তি বা নির্দেশিকা হিসেবে কাজ করে, যা ক্লায়েন্টকে জানিয়ে দেয় কোন ডেটা পাওয়া যাবে এবং কিভাবে সেই ডেটাকে অ্যাক্সেস করা যাবে। এটি মূলত টাইপ সিস্টেম (Type System) ব্যবহার করে, যেখানে প্রত্যেকটি ডেটা ফিল্ডের ধরন (type) এবং সম্পর্ক নির্ধারণ করা হয়।
কুয়েরি (Query):
কুয়েরি হল ক্লায়েন্টের পাঠানো অনুরোধ যা নির্দিষ্ট ডেটা নিয়ে কাজ করে। কুয়েরির মাধ্যমে ক্লায়েন্ট সার্ভারকে জানায় যে, তারা কোন ডেটা চাইছে। সাধারণত, কুয়েরি একাধিক ডেটা ফিল্ড এবং তাদের সম্পর্কের মাধ্যমে গঠিত হয়।
মিউটেশন (Mutation):
যখন ক্লায়েন্ট ডেটার কোনো পরিবর্তন করতে চায়, তখন মিউটেশন ব্যবহার করা হয়। এটি ডেটা আপডেট, তৈরি অথবা মুছে ফেলার জন্য ব্যবহৃত হয়। কুয়েরির মাধ্যমে শুধুমাত্র ডেটা পড়া যায়, তবে মিউটেশনের মাধ্যমে ডেটা পরিবর্তন করা যায়।
একটি সাধারণ GraphQL API এর উদাহরণ
ধরা যাক, আমাদের একটি User রিসোর্স রয়েছে, যেখানে name, email, এবং age এর মতো ফিল্ড রয়েছে। নিচে একটি সাধারণ কুয়েরি এবং স্কিমা উদাহরণ দেওয়া হলো:
স্কিমা (Schema):
type Query {
users: [User]
}
type User {
id: ID
name: String
email: String
age: Int
}
কুয়েরি (Query):
query {
users {
name
email
}
}
এই কুয়েরি সার্ভারকে বলছে যে, "আমাকে সব User এর নাম এবং ইমেইল পাঠাও।" এখানে, ক্লায়েন্ট নির্দিষ্টভাবে name এবং email চেয়েছে, তাই সার্ভার অতিরিক্ত ডেটা ফেরত পাঠাবে না (যেমন: age বা id)।
মিউটেশন (Mutation):
mutation {
createUser(name: "John Doe", email: "john.doe@example.com", age: 30) {
id
name
}
}
এই মিউটেশনটি একটি নতুন ইউজার তৈরি করবে এবং সেই ইউজারের id এবং name ফেরত পাঠাবে।
GraphQL এর একটি সাধারণ API এর সুবিধা
নির্দিষ্ট ডেটা চাওয়া:
GraphQL ক্লায়েন্টদের শুধু তাদের প্রয়োজনীয় ডেটা চাওয়ার সুযোগ দেয়। উদাহরণস্বরূপ, যদি ক্লায়েন্ট শুধু ইউজারের নাম এবং ইমেইল চায়, তাহলে শুধু সেই দুটি ফিল্ডই ফিরিয়ে আনা হবে। অতিরিক্ত ডেটার জন্য কোন রাউন্ড-ট্রিপ হবে না, যা কার্যকারিতা বাড়ায়।
একক এন্ডপয়েন্ট:
REST API-তে একাধিক এন্ডপয়েন্ট ব্যবহার করতে হয়, তবে GraphQL এর মধ্যে শুধুমাত্র একটি এন্ডপয়েন্ট থাকে যা সমস্ত ডেটার জন্য প্রশ্ন করা হয়। এটি সার্ভার ব্যবস্থাপনা সহজ করে এবং কোডকে ক্লিন রাখে।
নম্যনীয় স্কিমা:
GraphQL API একটি শক্তিশালী এবং নমনীয় স্কিমা প্রদান করে, যা বিভিন্ন ধরণের ডেটা ফিল্ড এবং তাদের সম্পর্ককে সহজে সংজ্ঞায়িত করতে পারে।
সারাংশ
GraphQL এর একটি সাধারণ API ক্লায়েন্ট এবং সার্ভারের মধ্যে নির্দিষ্ট এবং কার্যকরী ডেটা আদান-প্রদান নিশ্চিত করে। এতে স্কিমা, কুয়েরি, এবং মিউটেশন এর মাধ্যমে ডেটা চাওয়া এবং পরিবর্তন করা হয়। এটি REST API থেকে আরও বেশি নমনীয় এবং কার্যকরী, কারণ এতে ক্লায়েন্টদের শুধুমাত্র প্রয়োজনীয় ডেটা পাঠানোর সুযোগ থাকে এবং একটি একক এন্ডপয়েন্টের মাধ্যমে সমস্ত ডেটা প্রাপ্তি সম্ভব হয়।
Read more