GraphQL একটি শক্তিশালী কুয়েরি ভাষা যা API এর মাধ্যমে ডেটা রিকোয়েস্ট এবং ম্যানিপুলেশনকে আরও ফ্লেক্সিবল এবং কার্যকরী করে তোলে। এটি মূলত ফেসবুক দ্বারা তৈরি করা হয়েছে এবং এখন এটি অনেক ওয়েব অ্যাপ্লিকেশন এবং সার্ভিসে ব্যবহৃত হয়। GraphQL এর মাধ্যমে আপনি একক রিকোয়েস্টে বিভিন্ন ধরনের ডেটা ফেচ করতে পারেন এবং ক্লায়েন্ট সাইডে ডেটার প্রয়োজনীয় অংশগুলোই রিকোয়েস্ট করতে পারেন।
যেহেতু JSON একটি স্ট্যান্ডার্ড ডেটা ফরম্যাট, GraphQL API এর রেসপন্স এবং রিকোয়েস্টে JSON ব্যবহার করা হয়। GraphQL এ JSON ফরম্যাটের মাধ্যমে ডেটা পাঠানো এবং গ্রহণ করা হয়।
GraphQL এ JSON এর ভূমিকা
GraphQL ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করতে JSON ফরম্যাট ব্যবহার করে। GraphQL সাধারণত দুইটি প্রধান জায়গায় JSON ব্যবহার করে:
- Request: ক্লায়েন্ট সার্ভারে ডেটার জন্য যে কুয়েরি পাঠায়, তা JSON ফরম্যাটে থাকে।
- Response: সার্ভার যখন ডেটা ফিরিয়ে দেয়, তখন সেটি JSON ফরম্যাটে ফেরত আসে।
১. GraphQL Request (কুয়েরি)
GraphQL রিকোয়েস্ট সাধারণত একটি JSON অবজেক্ট হিসেবে তৈরি হয়, যেখানে কুয়েরি বা মিউটেশন থাকে এবং এর সাথে কিছু অতিরিক্ত তথ্য থাকতে পারে যেমন ভেরিয়েবল, অপারেশন নাম ইত্যাদি।
উদাহরণ:
ধরা যাক, আমরা একটি গ্রাহকের তথ্য ফেচ করতে চাই যেটি id, name এবং email রিটার্ন করবে। ক্লায়েন্ট একটি JSON অবজেক্ট হিসেবে এটি রিকোয়েস্ট করবে।
GraphQL Query Request (JSON ফরম্যাটে):
{
"query": "query { user(id: 1) { id, name, email } }"
}
ব্যাখ্যা:
"query": এখানে গ্রাহকের তথ্য ফেচ করার জন্য কুয়েরি পাঠানো হয়েছে।{ user(id: 1) { id, name, email } }: এটি হল কুয়েরি যা সার্ভারকে বলে যে,id = 1এর গ্রাহকেরid,nameএবংemailফিল্ডগুলো ফেরত দিতে।
২. GraphQL Response (রেসপন্স)
GraphQL সার্ভার রিকোয়েস্টের উত্তরে JSON ফরম্যাটে ডেটা প্রদান করে। রেসপন্সটি সাধারণত একটি JSON অবজেক্ট থাকে, যেখানে data নামক একটি ফিল্ড থাকে এবং এর মধ্যে রিকোয়েস্ট করা ডেটা থাকে।
উদাহরণ:
যদি সার্ভার গ্রাহকের তথ্য সফলভাবে রিটার্ন করে, তাহলে এটি একটি JSON রেসপন্স হিসেবে পাঠাবে:
GraphQL Response (JSON ফরম্যাটে):
{
"data": {
"user": {
"id": "1",
"name": "John Doe",
"email": "john.doe@example.com"
}
}
}
ব্যাখ্যা:
"data": এটি মূল JSON অবজেক্টের মধ্যে থাকা একটি ফিল্ড, যা সার্ভারের রিটার্ন ডেটা ধারণ করে।"user": এটি গ্রাহক সম্পর্কিত তথ্য ধারণ করে, যেখানেid,name, এবংemailফিল্ড রয়েছে।
৩. GraphQL মিউটেশন এবং JSON
GraphQL তে মিউটেশন (Mutation) একটি গুরুত্বপূর্ণ অপারেশন যা ডেটা পরিবর্তন করতে ব্যবহৃত হয় (যেমন ডেটা আপডেট, ইনসার্ট বা ডিলিট)। মিউটেশন রিকোয়েস্টও JSON ফরম্যাটে তৈরি হয় এবং এর রেসপন্সও JSON ফরম্যাটে থাকে।
উদাহরণ:
ধরা যাক, আমরা একটি নতুন ইউজার তৈরি করতে চাই।
GraphQL Mutation Request (JSON ফরম্যাটে):
{
"query": "mutation { createUser(name: \"Jane Doe\", email: \"jane.doe@example.com\") { id, name, email } }"
}
ব্যাখ্যা:
"mutation": এটি মিউটেশন অপারেশন শুরু করে, যেখানেcreateUserমিউটেশন দিয়ে নতুন ইউজার তৈরি করা হচ্ছে।
GraphQL Mutation Response (JSON ফরম্যাটে):
{
"data": {
"createUser": {
"id": "2",
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
}
}
ব্যাখ্যা:
"data": এখানে সার্ভারটি সফলভাবে ডেটা রিটার্ন করেছে, যেখানে নতুন ইউজারেরid,name, এবংemailরয়েছে।
৪. Query Variables in JSON
GraphQL কুয়েরিতে ভেরিয়েবল ব্যবহার করা যায়, যা JSON ফরম্যাটে পাঠানো হয়। ভেরিয়েবল ব্যবহারের মাধ্যমে কুয়েরি আরও ডাইনামিক এবং পুনঃব্যবহারযোগ্য হতে পারে।
উদাহরণ:
ধরা যাক, আমরা ভেরিয়েবল ব্যবহার করে একটি কুয়েরি তৈরি করতে চাই যা ইউজারের id দিয়ে তাদের তথ্য ফেচ করবে।
GraphQL Query with Variables Request (JSON ফরম্যাটে):
{
"query": "query getUser($id: ID!) { user(id: $id) { id, name, email } }",
"variables": {
"id": "1"
}
}
ব্যাখ্যা:
"query": এখানে কুয়েরি স্ট্রিং রয়েছে, যেখানে$idএকটি ভেরিয়েবল হিসেবে ব্যবহৃত হচ্ছে।"variables": এটি একটি JSON অবজেক্ট যা ভেরিয়েবলগুলো ধারণ করে। এখানে$idএর মান"1"দেওয়া হয়েছে।
৫. Error Handling in GraphQL with JSON
GraphQL তে যখন কোনো ত্রুটি ঘটে, তখন তা JSON রেসপন্সের মধ্যে একটি "errors" ফিল্ডের মাধ্যমে প্রদান করা হয়। ত্রুটি সম্পর্কিত বিস্তারিত তথ্য এই ফিল্ডে থাকে।
উদাহরণ:
GraphQL Error Response (JSON ফরম্যাটে):
{
"errors": [
{
"message": "User not found",
"locations": [{"line": 2, "column": 3}],
"path": ["user"],
"extensions": {
"code": "NOT_FOUND"
}
}
]
}
ব্যাখ্যা:
"errors": এটি একটি অ্যারে যা সমস্ত ত্রুটি সম্পর্কিত তথ্য ধারণ করে।"message": ত্রুটির বর্ণনা।"path": ত্রুটিটি কোন কুয়েরি পাথে ঘটেছে তা দেখায়।
JSON এবং GraphQL এর মধ্যে সম্পর্ক
- JSON ফরম্যাট: JSON হল ডেটা ট্রান্সফার ফরম্যাট যা সার্ভার এবং ক্লায়েন্টের মধ্যে তথ্য আদান-প্রদান করতে ব্যবহৃত হয়।
- GraphQL: GraphQL হল একটি কুয়েরি ভাষা যা JSON ফরম্যাটে ডেটা রিকোয়েস্ট এবং রেসপন্স করে, তবে এতে আপনি ডেটার কাঠামো কাস্টমাইজ করতে পারবেন।
GraphQL ব্যবহার করে আপনি JSON ফরম্যাটের মাধ্যমে ডেটা কুয়েরি করতে, ম্যানিপুলেট করতে এবং রিসিভ করতে পারেন, যার ফলে একাধিক রিকোয়েস্টের পরিবর্তে একটি রিকোয়েস্টে প্রয়োজনীয় সমস্ত ডেটা সহজেই একত্রিত করা সম্ভব।
সারাংশ
GraphQL এর মাধ্যমে JSON ডেটা ব্যবহার করা সহজ এবং ফ্লেক্সিবল। এটি request এবং response উভয় ক্ষেত্রেই JSON ফরম্যাট ব্যবহার করে। GraphQL ব্যবহারকারীদের নির্দিষ্ট ডেটা ফেচ করার ক্ষমতা প্রদান করে এবং JSON ফরম্যাটের মাধ্যমে সেই ডেটা নিরাপদ এবং কার্যকরভাবে পরিচালনা করা হয়। GraphQL এর সাহায্যে বিভিন্ন কুয়েরি এবং মিউটেশন JSON ফরম্যাটে তৈরি করা হয় এবং রেসপন্স JSON আকারে ফেরত আসে। JSON এর মাধ্যমে ডেটা এক্সচেঞ্জ করা সহজ ও কার্যকরী, যা API উন্নয়নে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more