GraphQL একটি শক্তিশালী এবং নমনীয় API কুয়েরি ভাষা, যা মূলত Facebook দ্বারা তৈরি করা হয়েছে এবং এটি ক্লায়েন্টদের ডেটা চাহিদার ভিত্তিতে ডেটা নিয়ে আসতে সক্ষম করে। GraphQL JSON ডেটা ফরম্যাটে কুয়েরি এবং রেসপন্স প্রদান করে, যা ওয়েব অ্যাপ্লিকেশনগুলির জন্য দ্রুত এবং কার্যকরী ডেটা আদান-প্রদান নিশ্চিত করে।
GraphQL Query
GraphQL ক্লায়েন্ট (যেমন: React, Apollo Client, অথবা Postman) একটি Query পাঠায় যা ডেটা সংগ্রহ করতে সাহায্য করে। একটি GraphQL কুয়েরি সঠিকভাবে JSON ফরম্যাটে ডেটার কাঠামো নির্ধারণ করে এবং সার্ভারে রিকোয়েস্ট পাঠায়।
Query Syntax:
GraphQL কুয়েরি সিনট্যাক্স হল:
- Fields: আপনি যে ডেটাগুলি চাচ্ছেন তা সুনির্দিষ্ট করুন।
- Arguments: যদি কোনো ডেটা নির্দিষ্ট করতে হয়, তবে আর্গুমেন্ট ব্যবহার করুন।
- Variables: একাধিক ভ্যারিয়েবল ব্যবহার করা যাবে কুয়েরি করার সময়।
উদাহরণ (Basic Query)
এখানে একটি সাধারণ GraphQL কুয়েরি দেওয়া হলো যা একটি ব্যবহারকারীর তথ্য সংগ্রহ করার জন্য JSON ফরম্যাটে ডেটা চায়:
{
user(id: "1") {
name
age
email
}
}
এই কুয়েরিটি user নামের একটি ফিল্ড চাচ্ছে যেখানে id হচ্ছে 1। ফিল্ডগুলো হল: name, age, এবং email।
GraphQL Response (JSON)
GraphQL সার্ভার কুয়েরির ভিত্তিতে একটি JSON রেসপন্স পাঠায়। রেসপন্সে অবশ্যই data ফিল্ড থাকতে হবে, যার মধ্যে ডেটার কাঠামো থাকে। যদি কোনো ত্রুটি ঘটে, তখন errors ফিল্ডটি যোগ করা হয়।
Response Structure:
{
"data": {
"user": {
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
}
}
}
এখানে, সার্ভারটি user নামের একটি অবজেক্ট ফিরিয়ে দিয়েছে, যার মধ্যে name, age, এবং email ফিল্ড রয়েছে।
GraphQL Query এর জন্য JSON Variables ব্যবহার করা
GraphQL কুয়েরির সাথে Variables ব্যবহার করা অনেক সুবিধাজনক। এতে কুয়েরি কোডটিকে পুনঃব্যবহারযোগ্য এবং পরিষ্কার করা যায়, কারণ কুয়েরির প্যারামিটারগুলো আলাদাভাবে JSON এর মাধ্যমে সরবরাহ করা হয়।
উদাহরণ (Query with Variables):
Query:
query GetUser($id: ID!) {
user(id: $id) {
name
age
email
}
}
এখানে, $id একটি ভ্যারিয়েবল, এবং কুয়েরি এটির মান পাবার জন্য একটি আর্গুমেন্ট গ্রহণ করছে।
Variables:
{
"id": "1"
}
এখানে, JSON ভ্যারিয়েবল id এর মান 1 হিসাবে সরবরাহ করা হয়েছে। এখন ক্লায়েন্টে কুয়েরি পাঠানোর সময় এই ভ্যারিয়েবল ব্যবহার করা হবে।
Complete Example (Query with JSON Variables):
Query Request (with Variables):
{
"query": "query GetUser($id: ID!) { user(id: $id) { name age email } }",
"variables": {
"id": "1"
}
}
Response:
{
"data": {
"user": {
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
}
}
}
GraphQL Mutation (Update Data)
GraphQL শুধু ডেটা পড়তে (Query) নয়, ডেটা আপডেট, যোগ বা মুছতেও Mutation ব্যবহার করে। JSON ফরম্যাটে Mutation এবং Response একই রকমের হয়।
Mutation Example:
mutation {
updateUser(id: "1", input: { name: "Jane Doe", age: 32 }) {
name
age
}
}
এখানে, updateUser একটি Mutation যা id এবং input আর্গুমেন্ট গ্রহণ করে, যেখানে নতুন name এবং age প্যারামিটার রয়েছে।
Mutation Response Example:
{
"data": {
"updateUser": {
"name": "Jane Doe",
"age": 32
}
}
}
Error Handling in GraphQL
GraphQL রেসপন্সে ত্রুটির (Error) জন্য errors ফিল্ড থাকে। এই ফিল্ডে ত্রুটির বিস্তারিত তথ্য পাওয়া যায়।
Error Response Example:
{
"errors": [
{
"message": "User not found",
"locations": [{"line": 2, "column": 3}],
"path": ["user"],
"extensions": {
"code": "USER_NOT_FOUND"
}
}
],
"data": null
}
এখানে, একটি ত্রুটি ঘটেছে যেটি বলে যে "User not found" এবং data ফিল্ডটি null ফিরিয়ে দিয়েছে।
Conclusion
GraphQL এর মাধ্যমে JSON ডেটার জন্য কুয়েরি এবং রেসপন্স ব্যবস্থাপনা খুবই নমনীয় এবং শক্তিশালী। Query এর মাধ্যমে ডেটা নির্দিষ্টভাবে রিকোয়েস্ট করা যায়, এবং JSON ফরম্যাটে Response প্রদান করা হয়, যা ক্লায়েন্টের জন্য সহজে হ্যান্ডেলযোগ্য। Variables ব্যবহারের মাধ্যমে কুয়েরি আরও পুনঃব্যবহারযোগ্য হয়, এবং Mutation এর মাধ্যমে ডেটা পরিবর্তন বা আপডেট করা যায়। তাছাড়া, GraphQL রেসপন্সের সাথে error handling এর মাধ্যমে সমস্যাগুলি সঠিকভাবে পরিচালনা করা যায়।
JSON এর মাধ্যমে GraphQL কুয়েরি এবং রেসপন্স ব্যবস্থাপনা ডেটা আদান-প্রদানকে আরও কার্যকরী এবং নিরাপদ করে তোলে।
Read more