Node.js GraphQL

GraphQL APIs তৈরি এবং পরিচালনা করতে শিখুন

GraphQL কি?

GraphQL হল API-এর জন্য একটি ক্যোয়ারী ভাষা এবং আপনার ডেটার বিরুদ্ধে সেই প্রশ্নগুলি চালানোর জন্য একটি রানটাইম। এটি 2012 সালে Facebook দ্বারা বিকাশ করা হয়েছিল এবং 2015 সালে সর্বজনীনভাবে প্রকাশিত হয়েছিল।

মূল বৈশিষ্ট্য

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

💡দ্রষ্টব্য:

REST এর বিপরীতে, GraphQL ক্লায়েন্টদের তাদের ঠিক কোন ডেটার প্রয়োজন তা নির্দিষ্ট করার অনুমতি দেয়, অতিরিক্ত-নিষ্কাশন এবং ডেটার কম নিষ্কাশন হ্রাস করে।

Node.js-এ GraphQL দিয়ে শুরু করা

পূর্বশর্ত

ধাপ 1: একটি নতুন প্রকল্প সেট আপ করুন

একটি নতুন ফোল্ডার তৈরি করুন এবং Node.js প্রকল্প শুরু করুন:

mkdir graphql-server
cd graphql-server
npm init -y

ধাপ 2: প্রয়োজনীয় প্যাকেজ ইনস্টল করুন

প্রয়োজনীয় নির্ভরতা ইনস্টল করুন:

npm install express express-graphql graphql

এটি প্রতিষ্ঠা করে:

ধাপ 3: একটি মৌলিক গ্রাফকিউএল সার্ভার তৈরি করুন

3.1 আপনার ডেটা মডেল সংজ্ঞায়িত করুন

একটি নতুন ফাইল server.js তৈরি করুন এবং GraphQL এর স্কিমা ডেফিনিশন ল্যাঙ্গুয়েজ (SDL) ব্যবহার করে আপনার ডেটা মডেল সংজ্ঞায়িত করা শুরু করুন:

const express = require('express'); const { graphqlHTTP } = প্রয়োজন('express-graphql'); const { buildSchema } = require('graphql'); // নমুনা তথ্য const বই = [ { আইডি: '1', শিরোনাম: 'দ্য গ্রেট গ্যাটসবি', লেখক: 'এফ। স্কট ফিটজেরাল্ড', বছর: 1925, ধারা: 'উপন্যাস' }, { আইডি: '2', শিরোনাম: 'টু কিল এ মকিংবার্ড', লেখক: 'হার্পার লি', বছর: 1960, ধরণ: 'দক্ষিণ গথিক' } ];

3.2 একটি GraphQL স্কিমা সংজ্ঞায়িত করুন

আপনার server.js ফাইলে প্রকল্প সংজ্ঞা যোগ করুন:

// GraphQL স্কিমা ভাষা ব্যবহার করে স্কিমা সংজ্ঞায়িত করুন const schema = buildSchema(` # একটি বইয়ের শিরোনাম, লেখক এবং প্রকাশনা বছর রয়েছে টাইপ বই { আইডি: আইডি! শিরোনাম: স্ট্রিং! লেখক: স্ট্রিং! বছর: Int ধরণ: স্ট্রিং } # "কোয়েরি" প্রকারটি সমস্ত গ্রাফকিউএল প্রশ্নের উত্স টাইপ কোয়েরি { # সব বই পান বই: [বই!]! # আইডি দ্বারা একটি নির্দিষ্ট বই পান বই (আইডি: আইডি!): বই # শিরোনাম বা লেখক দ্বারা বই অনুসন্ধান করুন searchBooks(query: String!): [Book!]! } `);

3.3 সমাধানকারীদের বাস্তবায়ন করুন

প্রকৃত তথ্য পেতে সমাধানকারী ফাংশন যোগ করুন:

// স্কিমা ক্ষেত্রগুলির জন্য সমাধানকারীদের সংজ্ঞায়িত করুন const root = { // সব বই পেতে সমাধানকারী বই: () => বই, // আইডি দ্বারা একটি একক বই পেতে সমাধানকারী বই: ({ id }) => books.find(book => book.id === id), // বই অনুসন্ধানের জন্য সমাধানকারী অনুসন্ধান বই: ({ প্রশ্ন }) => { const searchTerm = query.toLowerCase(); বই ফেরত. ফিল্টার( বই => book.title.toLowerCase().includes(searchTerm) || book.author.toLowerCase().includes(searchTerm) ); } };

3.4 এক্সপ্রেস সার্ভার সেট আপ করুন

সার্ভার সেটআপ সম্পূর্ণ করুন:

// একটি এক্সপ্রেস অ্যাপ্লিকেশন তৈরি করুন const app = express(); // GraphQL টার্মিনাল সেট আপ করুন app.use('/graphql', graphqlHTTP({ স্কিমা: স্কিমা, rootValue: root, // পরীক্ষার জন্য GraphiQL ইন্টারফেস সক্ষম করুন গ্রাফিকাল: সত্য, })); // সার্ভার শুরু করুন const PORT = 4000; app.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/graphql` এ চলছে); });

ধাপ 4: আপনার GraphQL সার্ভার চালান এবং পরীক্ষা করুন

4.1 সার্ভার শুরু করুন

Node.js :

node server.js

আপনি বার্তা দেখতে হবে:Server running at http://localhost:4000/graphql

4.2 গ্রাফিকিউএল দিয়ে পরীক্ষা করুন

আপনার ব্রাউজার খুলুন এবং GraphiQL ইন্টারফেস অ্যাক্সেস করতে http://localhost:4000/graphql এ যান।

উদাহরণ প্রশ্ন: সব বই পান

{
  books {
    id
    title
    author
    year
  }
}

উদাহরণ প্রশ্ন: একটি একক বই পান

{
  book(id: "1") {
    title
    author
    genre
  }
}

উদাহরণ ক্যোয়ারী: বই অনুসন্ধান করুন

{
  searchBooks(query: "Gatsby") {
    title
    author
    year
  }
}

গ্রাফকিউএল স্কিম এবং প্রকার

GraphQL স্কিমাগুলি আপনার API এর গঠন এবং অনুরোধ করা যেতে পারে এমন ডেটার প্রকারগুলিকে সংজ্ঞায়িত করে৷

টাইপ সিস্টেম

GraphQL আপনার ডেটার বিন্যাস সংজ্ঞায়িত করতে একটি টাইপ সিস্টেম ব্যবহার করে। এখানে মৌলিক স্কেলিং ধরনের আছে:

টাইপ ব্যাখ্যা উদাহরণ
Int একটি স্বাক্ষরিত 32-বিট পূর্ণসংখ্যা 42
Float একটি স্বাক্ষরিত দ্বিগুণ-নির্ভুল ফ্লোটিং-পয়েন্ট মান 3.14
String UTF-8 অক্ষর স্ট্রিং "Hello, GraphQL!"
Boolean সত্য বা মিথ্যা true, false
ID অনন্য শনাক্তকারী, একটি স্ট্রিং হিসাবে ক্রমিক "5f8a8d8e8f8c8d8b8a8e8f8c"

অনুশীলন করুন

GraphQL ক্লায়েন্টদের ______ তাদের যা প্রয়োজন তা অনুরোধ করার অনুমতি দেয় এবং এর বেশি কিছু না।

কম
✗ ভুল! GraphQL ক্লায়েন্টদের তাদের ঠিক যা প্রয়োজন তা অনুরোধ করার অনুমতি দেয়, কম নয়
সবকিছু
✗ ভুল! GraphQL ক্লায়েন্টদের সমস্ত ডেটা অনুরোধ করার অনুমতি দেয় না, শুধুমাত্র তাদের যা প্রয়োজন
হুবহু
✓ ঠিক আছে! GraphQL ক্লায়েন্টদের তাদের প্রয়োজনীয় ডেটার জন্য অনুরোধ করার অনুমতি দেয়, অতিরিক্ত নিষ্কাশন এবং ডেটার কম নিষ্কাশন হ্রাস করে।
স্বয়ংক্রিয়ভাবে
✗ ভুল! গ্রাফকিউএল ক্লায়েন্টরা স্বয়ংক্রিয়ভাবে ডেটার জন্য অনুরোধ করে না, তারা ঠিক কী চায় তা নির্দিষ্ট করতে হবে