koa-graphql এর মাধ্যমে KoaJS এ GraphQL ইন্টিগ্রেশন

KoaJS এবং GraphQL Integration - কোআজেএস (KoaJS) - Web Development

205

GraphQL হল একটি নতুন প্রজন্মের API প্রযুক্তি যা Facebook দ্বারা ডেভেলপ করা হয় এবং এটি REST API এর একটি বিকল্প হিসেবে ব্যবহৃত হয়। GraphQL আপনাকে আপনার ডেটা খুবই নির্দিষ্টভাবে এবং কার্যকরীভাবে পেতে সাহায্য করে, কারণ আপনি শুধু সেই ডেটা পাবেন যা আপনি চাইবেন, এবং যেটি অনেক বেশি স্কেলেবল। KoaJS-এ GraphQL ইন্টিগ্রেট করতে koa-graphql লাইব্রেরি ব্যবহার করা হয়।

এই টিউটোরিয়ালে, আমরা KoaJS-এ koa-graphql লাইব্রেরি ব্যবহার করে কিভাবে একটি GraphQL API ইন্টিগ্রেট করা যায়, তা শিখব।


১. KoaJS এবং koa-graphql ইনস্টলেশন

প্রথমে, আপনাকে koa-graphql এবং graphql প্যাকেজ দুটি ইনস্টল করতে হবে:

npm install koa-graphql graphql
  • koa-graphql: KoaJS এর জন্য একটি মিডলওয়্যার যা GraphQL API পরিচালনা করে।
  • graphql: GraphQL এর জন্য একটি কোর লাইব্রেরি যা Schema এবং Query Execution হ্যান্ডল করে।

২. GraphQL Schema ডিজাইন করা

GraphQL API তৈরি করতে প্রথমে আপনাকে একটি Schema ডিজাইন করতে হবে। Schema-তে আপনি ডেটার ধরন (Types) এবং তাদের সম্পর্ক (Resolvers) নির্ধারণ করবেন। এই Schema একটি প্রশ্ন বা মিউটেশন (Query or Mutation) দ্বারা কিভাবে ডেটা পরিচালিত হবে তা নির্ধারণ করে।

২.১. GraphQL Schema উদাহরণ

এখানে, আমরা একটি সিম্পল Product সম্পর্কিত GraphQL API তৈরি করব।

const Koa = require('koa');
const Router = require('koa-router');
const koaGraphQL = require('koa-graphql');
const { GraphQLSchema, GraphQLObjectType, GraphQLString, GraphQLInt } = require('graphql');

// Koa অ্যাপ্লিকেশন তৈরি করা
const app = new Koa();
const router = new Router();

// Product Type (Schema) তৈরি করা
const ProductType = new GraphQLObjectType({
  name: 'Product',
  fields: () => ({
    id: { type: GraphQLInt },
    name: { type: GraphQLString },
    price: { type: GraphQLInt },
  }),
});

// Root Query Type তৈরি করা
const RootQuery = new GraphQLObjectType({
  name: 'RootQueryType',
  fields: {
    product: {
      type: ProductType,
      args: { id: { type: GraphQLInt } }, // Product ID আর্গুমেন্ট হিসাবে নেওয়া হবে
      resolve(parent, args) {
        // এখানে আপনি ডেটাবেস বা কোনো ডাটা সোর্স থেকে ডেটা রিটার্ন করবেন
        return { id: args.id, name: 'Product ' + args.id, price: 100 };
      },
    },
  },
});

// Mutation Type (Data Manipulation) তৈরি করা
const Mutation = new GraphQLObjectType({
  name: 'Mutation',
  fields: {
    addProduct: {
      type: ProductType,
      args: {
        name: { type: GraphQLString },
        price: { type: GraphQLInt },
      },
      resolve(parent, args) {
        // নতুন Product তৈরি করা (ডেটাবেসে ইনসার্টের মতো)
        return { id: Math.floor(Math.random() * 1000), name: args.name, price: args.price };
      },
    },
  },
});

// Schema তৈরি করা
const schema = new GraphQLSchema({
  query: RootQuery,
  mutation: Mutation,
});

// koa-graphql মিডলওয়্যার ব্যবহার করা
router.all('/graphql', koaGraphQL({ schema, graphiql: true }));

// রাউট মাউন্ট করা
app.use(router.routes()).use(router.allowedMethods());

// সার্ভার চালু করা
app.listen(3000, () => {
  console.log('GraphQL API running on http://localhost:3000/graphql');
});

ব্যাখ্যা:

  1. ProductType: একটি গ্রাফকিউএল টাইপ, যা id, name, এবং price ফিল্ডগুলো ধারণ করে।
  2. RootQuery: একটি রুট কুয়েরি টাইপ যা product নামক একটি ফিল্ড ধারণ করে, যেখানে আপনি একটি id আর্গুমেন্ট দিয়ে প্রোডাক্টের তথ্য নিতে পারেন।
  3. Mutation: একটি মিউটেশন টাইপ যা addProduct নামক একটি ফিল্ড ধারণ করে, যেখানে আপনি নতুন প্রোডাক্ট যোগ করতে পারবেন।
  4. graphql: koa-graphql মিডলওয়্যারকে /graphql এপিআই রাউটে যুক্ত করা হয়েছে, যা GraphQL কুয়েরি এবং মিউটেশন সমর্থন করবে। graphiql: true দিয়ে GraphiQL ইনটারফেস সক্রিয় করা হয়েছে, যাতে আপনি ইন্টারেকটিভভাবে API টেস্ট করতে পারেন।

৩. GraphiQL ইনটারফেস

এই কোডে graphiql: true ব্যবহার করা হয়েছে, যার মাধ্যমে আপনি GraphiQL নামক একটি ইন্টারেকটিভ ডেভেলপার টুল পাবেন। এটি আপনাকে GraphQL কুয়েরি লেখার এবং API-টি টেস্ট করার সুবিধা দেয়।

আপনি যেহেতু /graphql রাউটে এই মিডলওয়্যার ব্যবহার করেছেন, সুতরাং, আপনি ব্রাউজারে http://localhost:3000/graphql URL-এ গিয়ে GraphiQL ইন্টারফেস ব্যবহার করতে পারবেন।


৪. GraphQL Query and Mutation উদাহরণ

৪.১. Query Example

গ্রাফকিউএল কুয়েরি দিয়ে আপনি কোনো প্রোডাক্টের তথ্য দেখতে পারেন। উদাহরণস্বরূপ:

Query:

query {
  product(id: 1) {
    id
    name
    price
  }
}

এটি একটি প্রোডাক্টের id, name, এবং price তথ্য ফিরিয়ে দেবে।

৪.২. Mutation Example

নতুন প্রোডাক্ট তৈরি করার জন্য একটি মিউটেশন ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

Mutation:

mutation {
  addProduct(name: "New Product", price: 500) {
    id
    name
    price
  }
}

এটি নতুন একটি প্রোডাক্ট তৈরি করবে এবং তার id, name, এবং price ফিরিয়ে দেবে।


৫. Error Handling এবং Validation

GraphQL API তে ইনপুট ভ্যালিডেশন এবং ত্রুটি হ্যান্ডলিং খুব গুরুত্বপূর্ণ। আপনি args থেকে ইনপুট ভ্যালিডেশন করতে পারেন এবং এর ভিত্তিতে ত্রুটি ফেরত দিতে পারেন।

const RootQuery = new GraphQLObjectType({
  name: 'RootQueryType',
  fields: {
    product: {
      type: ProductType,
      args: { id: { type: GraphQLInt } },
      resolve(parent, args) {
        if (!args.id) {
          throw new Error('Product ID is required');
        }
        return { id: args.id, name: 'Product ' + args.id, price: 100 };
      },
    },
  },
});

এখানে:

  • যদি id আর্গুমেন্ট না দেওয়া হয়, তাহলে একটি ত্রুটি ফিরে আসবে।

সারাংশ

KoaJS-এ GraphQL ইন্টিগ্রেট করা অনেক সহজ এবং koa-graphql মিডলওয়্যার ব্যবহারে আপনি খুব সহজেই GraphQL API তৈরি করতে পারেন। GraphQL Schema তৈরি করে আপনি আপনার ডেটার ধরন এবং কুয়েরি ও মিউটেশন রেজলভারের মাধ্যমে API-কে কাস্টমাইজ করতে পারবেন। KoaJS এবং GraphQL একত্রে ব্যবহার করলে আপনি দ্রুত, স্কেলেবল এবং কার্যকরী API তৈরি করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...