GraphQL: HTTP-তে REST করার একটি বিকল্প

GraphQL: HTTP-তে REST করার একটি বিকল্প

অনেক ওপেন সোর্স আর্কিটেকচারাল স্ট্যান্ডার্ড অ্যাপ্লিকেশন তৈরি এবং বিতরণের জন্য বিদ্যমান। REST (রিপ্রেজেন্টেশনাল স্টেট ট্রান্সফার), SOAP (সিম্পল অবজেক্ট এক্সেস প্রোটোকল), RPC (রিমোট প্রসিডিউরাল কল), এবং গ্রাফকিউএল এপিআই সবচেয়ে জনপ্রিয়।





RESTful API হল সর্বাধিক ব্যবহৃত API আর্কিটেকচারাল স্ট্যান্ডার্ড। আপনি যদি অনেকগুলি এন্ডপয়েন্ট সহ জটিল RESTful API লিখে থাকেন তবে আপনি সম্ভবত বুঝতে পেরেছেন যে সেগুলি কতটা জটিল হতে পারে। এটি বিশেষ করে সত্য যদি শেষ পয়েন্টগুলির মধ্যে সামান্য পার্থক্য থাকে।





দিনের মেকইউজের ভিডিও

RESTful APIগুলি নির্দিষ্ট ডেটা নির্বাচন করার জন্য যথেষ্ট নমনীয় নয় বলে আপনি ডেটা আনার ক্ষেত্রেও সমস্যার সম্মুখীন হতে পারেন। GraphQL RESTful API-এর এই সমস্যার সমাধান করে।





GraphQL কি?

গ্রাফকিউএল (গ্রাফ কোয়েরি ল্যাঙ্গুয়েজ) হল একটি ক্যোয়ারী ল্যাঙ্গুয়েজ এবং এপিআই তৈরির জন্য রানটাইম। ডেটা ব্যবহার করার জন্য অনেকগুলি এন্ডপয়েন্ট সহ REST API-এর বিপরীতে, GraphQL API-এর একটি এন্ট্রি পয়েন্ট থাকে। আপনি প্রশ্নে এটি বর্ণনা করে নির্দিষ্ট ডেটা আনতে পারেন।

দ্য গ্রাফকিউএল স্পেসিফিকেশন ক্যোয়ারী ভাষা এবং GraphQL সার্ভার কিভাবে কাজ করে তা সংজ্ঞায়িত করে। আপনি পাইথন থেকে সার্ভার-সাইড ল্যাঙ্গুয়েজগুলিতে GraphQL API তৈরি এবং ব্যবহার করতে পারেন জাভাস্ক্রিপ্ট , এবং HTTP সমর্থন করে এমন যেকোনো ভাষা।



মেটা 2012 সালে HTTP-তে নির্মাণের জন্য REST-এর বিকল্প হিসাবে গ্রাফকিউএল তৈরি করেছে। তারা 2015 সালে গ্রাফকিউএলকে একটি ওপেন-সোর্স স্ট্যান্ডার্ড হিসেবে প্রকাশ করেছে। আজ, গ্রাফকিউএল ফাউন্ডেশন গ্রাফকিউএল স্পেসিফিকেশনের উন্নয়নের তত্ত্বাবধান করে।

GraphQL মোটামুটি নতুন, কম গ্রহণ সহ, এবং এটি ব্যবহার করার জন্য লুকানো খরচ আছে। গ্রাফকিউএল এপিআই তৈরি করা অপ্রয়োজনীয়ভাবে জটিল হতে পারে, বিশেষ করে কয়েকটি শেষ পয়েন্ট সহ ছোট প্রকল্পের জন্য।





এছাড়াও, সমস্ত GraphQL অনুরোধ শেষ পর্যন্ত অনুরোধের অবস্থা নির্বিশেষে 200 এর একটি স্ট্যাটাস কোড ফেরত দেয়।

GraphQL কিভাবে কাজ করে?

  গ্রাফকিউএল's functions and syntax

অপছন্দ REST, যা সম্পদ-ভিত্তিক , GraphQL এর প্রয়োজন যে আপনি ডেটার সাথে ইন্টারঅ্যাক্ট করার জন্য একটি গ্রাফ হিসাবে ডেটা সম্পর্কে ভাবেন৷ আপনি ডেটার গঠন নির্দিষ্ট করতে পারেন, এবং স্পেসিফিকেশন HTTP-তে API-এর সাথে ইন্টারঅ্যাক্ট করার জন্য একটি শক্তিশালী ক্যোয়ারী ইন্টারফেস প্রদান করে। আপনি এর উপর নির্ভর করে বিভিন্ন বৈশিষ্ট্য ব্যবহার করতে সক্ষম হবেন গ্রাফকিউএল প্যাকেজ বা লাইব্রেরি আপনি ব্যবহার করতে বেছে নিন।





GraphQL স্কিমাগুলিতে অবজেক্টের প্রকারগুলি অন্তর্ভুক্ত থাকে যা অনুরোধযোগ্য বস্তু এবং এর উপলব্ধ ক্ষেত্রগুলিকে সংজ্ঞায়িত করে। এপিআই কোয়েরি এবং মিউটেশনে, গ্রাফকিউএল প্যাকেজ কোয়েরি যাচাই করে এবং নির্দিষ্ট হ্যান্ডলার ফাংশন (সমাধানকারী) এর উপর ভিত্তি করে কোয়েরি চালায়।

উইন্ডোজ 10 এর জন্য সেরা এফটিপি ক্লায়েন্ট

কেন আপনি GraphQL ব্যবহার করা উচিত?

REST হল একটি সহজ-ব্যবহারযোগ্য মান, এবং বেশিরভাগ প্রোগ্রামিং ভাষায় RESTful APIগুলি দ্রুত তৈরি করার জন্য সরঞ্জাম রয়েছে৷ যাইহোক, RESTful API তৈরি এবং ব্যবহার করার ক্ষেত্রে অনেক সমস্যা রয়েছে।

এখানে REST এর কিছু সমস্যা রয়েছে যা ডেভেলপারদের কিছু ব্যবহারের ক্ষেত্রে GraphQL পছন্দ করে।

অদক্ষ ডেটা আনা

RESTful API এন্ডপয়েন্টের স্পেসিফিকেশনের উপর ভিত্তি করে ডেটা রিলে করে। এন্ডপয়েন্টের হ্যান্ডলার ফাংশনে যা হার্ড কোড করা হয়েছে তার বাইরে ডেটা পুনরুদ্ধার করার জন্য তারা যথেষ্ট নমনীয় নয়।

ধরুন একটি এন্ডপয়েন্ট কলে ডেটার একটি তালিকা প্রদান করে এবং আপনাকে ক্ষেত্রগুলির জন্য মান বা মানদণ্ড নির্দিষ্ট করতে হবে। সেক্ষেত্রে, ডেভেলপারকে একটি এন্ডপয়েন্ট তৈরি করতে হবে এবং ডেটা ফেরত দেওয়ার জন্য ব্যবসায়িক যুক্তি সংজ্ঞায়িত করতে হবে। আপনি মূল্যবান সম্পদ ম্যানুয়ালি পার্স করতে পারেন, যা শেষ পর্যন্ত আরও সময় নেয়।

আপনার সেল ফোনটি ট্যাপ করা হয়েছে কিনা তা কীভাবে জানবেন

GraphQL অদক্ষ ডেটা আনার সমস্যা সমাধান করে কারণ আপনি নমনীয়ভাবে মানদণ্ড এবং স্পেসিফিকেশনের উপর ভিত্তি করে ডেটা ফেরত দেওয়ার জন্য API গুলি জিজ্ঞাসা করতে পারেন৷

GraphQL APIগুলি ইন্টারেক্টিভ; আপনি একটি সহজ, পঠনযোগ্য সিনট্যাক্সে পুনরুদ্ধারের জন্য প্রয়োজনীয় ডেটা নির্দিষ্ট করতে পারেন।

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

উপরের গ্রাফকিউএল ক্যোয়ারী ক ব্যবহারকারী এন্ট্রি জন্য স্কিমা যেখানে বয়স ক্ষেত্র হল 89. ক্যোয়ারীতে এন্ট্রির জন্য একটি এমবেডেড ক্যোয়ারী আছে যেখানে জীবিত ক্ষেত্র মূল্যায়ন করে সত্য . এটি স্কিমা থেকে নাম, বায়ো এবং জাতীয়তা ক্ষেত্র ফেরত দেয়।

দ্রুত উন্নয়ন

গ্রাফকিউএল এপিআই তৈরি করা এবং ব্যবহার করা REST ব্যবহার করার চেয়ে সহজ, বিশেষত প্রকল্পের আকার বৃদ্ধির সাথে সাথে। ডেভেলপমেন্ট ফেজ চলাকালীন, RESTful APIs ডেভেলপ করার সময় আপনাকে যতটা রুট এবং হ্যান্ডলার ফাংশন ডেভেলপ করতে হবে না। GraphQL APIs ব্যবহার করা RESTful API-এর মতো ক্লান্তিকর নয়।

REST-এ, বিভিন্ন এন্ডপয়েন্ট বিভিন্ন রিসোর্সে অ্যাক্সেস দেয়, GraphQL এর বিপরীতে, যেখানে একটি একক এন্ডপয়েন্ট থাকে। এটি নমনীয়তা এবং কর্মক্ষমতা প্রদান করে এবং প্রশ্নগুলি বিভিন্ন সমাধানকারী ফাংশনকে কল করতে পারে।

গ্রাফকিউএল স্কিমা সংজ্ঞা ভাষা

GraphQL স্কিমা ডেফিনিশন ল্যাঙ্গুয়েজ (SDL) GraphQL পরিষেবাগুলির জন্য স্কিমাগুলি নির্দিষ্ট করে৷

GraphQL SDL সিনট্যাক্স পড়া এবং বোঝা সহজ। আপনি একটি ফাইলের সাথে আপনার স্কিমার কাঠামো নির্দিষ্ট করবেন .graphql বা .graphqls এক্সটেনশন

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

উপরের GraphQL কোডটি একটি GraphQL API-এর স্কিমা যা অনুরোধের জন্য API-এর কাঠামো নির্ধারণ করে। স্কিমা API-এর জন্য CRUD কার্যকারিতা সংজ্ঞায়িত করে।

ক্লায়েন্টের দিকে, স্কিমার কাঠামো এবং ক্লায়েন্টের ডেটা বা অপারেশনের উপর ভিত্তি করে, ক্লায়েন্ট একটি কার্যকর করতে পারে প্রশ্ন (বিশ্রামে পান বা মুছুন) বা ক মিউটেশন (PUT বা POST)।

এখানে প্রশ্ন করার একটি উদাহরণ মানব স্কিমা

query Human { 
name
age
}

উপরের ক্যোয়ারীটি মানুষের স্কিমা ফিরিয়ে দেবে নাম এবং বয়স ক্ষেত্রের তথ্য.

গ্রাফকিউএল মিউটেশনের কোয়েরির বিপরীতে মোটামুটি ভিন্ন সিনট্যাক্স রয়েছে। এখানে মিউটেশন অপারেশনের একটি উদাহরণ রয়েছে মানব স্কিমা

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

মিউটেশন কোড ইনপুট নাম এবং বয়স ক্লায়েন্টের কাছে ক্ষেত্র এবং ক্ষেত্রগুলি থেকে ডেটা ফেরত দেয়।

কিভাবে অ্যান্ড্রয়েড ফোনে স্ক্রিনশট নেবেন

আপনি যখন আপনার GraphQL API তৈরি করছেন তখন আপনার অধ্যবসায়ের জন্য একটি ডেটা স্টোরের প্রয়োজন হবে। REST এবং বেশিরভাগ HTTP-ভিত্তিক ওয়েব আর্কিটেকচারের মতো, GraphQL হল রাষ্ট্রহীন, এবং আপনি আপনার অ্যাপের জন্য যেকোনো ডেটা স্টোর বা ডাটাবেস ব্যবহার করতে পারেন।

একটি GraphQL API তৈরি করা

  গ্রাফকিউএল সমর্থিত ভাষা

গ্রাফকিউএল একটি স্পেসিফিকেশন, এবং আপনি সর্বাধিক জনপ্রিয় সার্ভার-সাইড ভাষায় গ্রাফকিউএল তৈরি করতে পারেন। আপনার প্রকল্পের জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলির সাথে আপনাকে একটি লাইব্রেরি খুঁজে বের করতে হবে।

একটি GraphQL লাইব্রেরি নির্বাচন করার সময়, আপনি একটি বৈশিষ্ট্য-সমৃদ্ধ লাইব্রেরি ব্যবহার করতে চান যা সমস্ত GraphQL প্রকার এবং অপারেশন সমর্থন করে। বেশিরভাগ লাইব্রেরি হয় একটি স্কিমা-প্রথম বা একটি কোড-প্রথম পদ্ধতি গ্রহণ করে। পূর্বে, আপনি একটি GraphQL স্কিমা সংজ্ঞায়িত করেন এবং লাইব্রেরি সমাধানকারী এবং বয়লারপ্লেট কোড তৈরি করে। পরেরটির জন্য, আপনি একটি স্কিমা সংজ্ঞায়িত না করেই সমাধানকারীদের হার্ড-কোড করেন।

গ্রাফকিউএল গ্রহণ করা হচ্ছে

GraphQL এর সূচনা থেকে, বিকাশকারী এবং কোম্পানিগুলি এর ব্যবহার সহজ করার জন্য সরঞ্জামগুলি প্রকাশ করেছে। এগুলো ছোট ও মাঝারি প্রকল্পের উন্নয়নের সময় কমাতে পারে।

আপনি ওপেন সোর্স গ্রাফকিউএল ক্লায়েন্ট, গ্রাফকিউএল ডকুমেন্টেশন এবং আরও জানতে এর স্পেসিফিকেশন দেখতে পারেন।