Apollo Federation ব্যবহার করে REST API একত্রিত করা`

GraphQL এবং REST API Integration - গ্রাফকিউএল (GraphQL) - Web Development

266

Apollo Federation হল একটি শক্তিশালী টুল যা বিভিন্ন GraphQL সার্ভার একত্রিত করার জন্য ব্যবহৃত হয়, যাতে আপনি একটি বৃহত এবং মডুলার GraphQL API তৈরি করতে পারেন। এটি একাধিক সার্ভারের মধ্যে REST API ইন্টিগ্রেশনকে সহজ করে তোলে এবং একাধিক মাইক্রো সার্ভিসের মধ্যে ডেটা একত্রিত করে একটি কেন্দ্রীয় GraphQL API প্রদান করে।

Apollo Federation ব্যবহার করে REST API একত্রিত করার মাধ্যমে আপনি REST API এবং GraphQL এর শক্তি একত্রে ব্যবহার করতে পারেন। এর মাধ্যমে আপনি REST API থেকে ডেটা একত্রিত করে একটি একক GraphQL API তৈরি করতে পারেন।


Apollo Federation কী?

Apollo Federation হল একটি ওপেন সোর্স আর্কিটেকচার যা একটি বা একাধিক GraphQL সার্ভারকে একত্রিত করে একটি মাইক্রো সার্ভিস আর্কিটেকচারে কাজ করতে সহায়ক। এর মাধ্যমে আপনি REST API, SQL/NoSQL ডেটাবেস এবং অন্যান্য গ্রাফকিউএল সার্ভারগুলি একত্রে ব্যবহার করতে পারেন এবং একটি একক ইন্টারফেস তৈরি করতে পারেন।

REST API এর সাথে Apollo Federation ইন্টিগ্রেশন

Apollo Federation এবং Apollo Server ব্যবহার করে REST API একত্রিত করার জন্য কিছু স্টেপ অনুসরণ করতে হবে। নিচে এই প্রক্রিয়াটি বিস্তারিতভাবে ব্যাখ্যা করা হলো।


ধাপ ১: Apollo Federation সার্ভার সেটআপ করা

প্রথমে Apollo Server এবং Apollo Federation প্যাকেজ ইন্সটল করতে হবে।

npm install @apollo/server @apollo/federation graphql

ধাপ ২: REST API গুলো তৈরি করা

ধরা যাক, আপনার একটি REST API রয়েছে যা একটি প্রোডাক্টের তথ্য প্রদান করে। আপনি একটি REST API ফিচার তৈরির জন্য Express.js এবং Axios ব্যবহার করতে পারেন।

const express = require('express');
const axios = require('axios');
const app = express();

app.get('/products', async (req, res) => {
  const response = await axios.get('https://fakestoreapi.com/products');
  res.json(response.data);
});

app.listen(4001, () => {
  console.log('REST API running on port 4001');
});

এখানে একটি সাধারণ REST API তৈরি করা হয়েছে যা Products এর তথ্য প্রদান করবে।

ধাপ ৩: REST API কে GraphQL সার্ভারে একত্রিত করা

এখন Apollo Federation এর সাহায্যে REST API কে GraphQL সার্ভারের মধ্যে একত্রিত করতে হবে। Apollo Server এর @restDataSource ব্যবহার করে REST API কে GraphQL API-তে রূপান্তর করা যায়।

npm install @apollo/server @apollo/federation graphql @apollo/datasource-rest

এখানে আমরা @apollo/datasource-rest প্যাকেজ ব্যবহার করব REST API একত্রিত করার জন্য।

const { ApolloServer } = require('@apollo/server');
const { gql } = require('graphql-tag');
const { RESTDataSource } = require('@apollo/datasource-rest');
const { buildFederatedSchema } = require('@apollo/federation');

// REST API data source
class ProductsAPI extends RESTDataSource {
  constructor() {
    super();
    this.baseURL = 'https://fakestoreapi.com';
  }

  async getProducts() {
    return this.get('/products');
  }

  async getProductById(id) {
    return this.get(`/products/${id}`);
  }
}

// GraphQL schema definition
const typeDefs = gql`
  type Product @key(fields: "id") {
    id: ID!
    title: String
    price: Float
    description: String
  }

  type Query {
    products: [Product]
    product(id: ID!): Product
  }
`;

// Resolvers
const resolvers = {
  Query: {
    products: async (_, __, { dataSources }) => {
      return dataSources.productsAPI.getProducts();
    },
    product: async (_, { id }, { dataSources }) => {
      return dataSources.productsAPI.getProductById(id);
    },
  },
  Product: {
    __resolveReference: async (product, { dataSources }) => {
      return dataSources.productsAPI.getProductById(product.id);
    },
  },
};

// Create the Apollo Server
const server = new ApolloServer({
  schema: buildFederatedSchema([{ typeDefs, resolvers }]),
  dataSources: () => ({
    productsAPI: new ProductsAPI(),
  }),
});

server.listen({ port: 4002 }).then(({ url }) => {
  console.log(`GraphQL Server ready at ${url}`);
});

ধাপ ৪: REST API কে GraphQL API-তে একত্রিত করা

  • ProductsAPI একটি RESTDataSource যা আপনার REST API থেকে ডেটা নিয়ে আসে।
  • typeDefs এবং resolvers GraphQL সার্ভারের জন্য স্কিমা এবং লজিক সংজ্ঞায়িত করে। এখানে, Product এর তথ্য GraphQL-এ পাওয়া যাবে এবং REST API থেকে ডেটা ফেচ করা হবে।
  • buildFederatedSchema ব্যবহার করা হয়েছে যাতে এটি একটি federated GraphQL স্কিমা তৈরি করতে পারে, যা অন্যান্য GraphQL সার্ভারের সাথে একত্রিত হতে সক্ষম।

ধাপ ৫: REST API কে Federation সহ GraphQL সার্ভারে ইন্টিগ্রেট করা

এখন, আপনি যখন products বা product কুয়েরি করবেন, তখন এই ডেটা REST API থেকে ফেচ হয়ে আসবে এবং আপনার Apollo Federation সার্ভারের মাধ্যমে GraphQL API হিসেবে সরবরাহ করা হবে।

GraphQL Query উদাহরণ

এখন, আপনি Apollo Federation সার্ভার থেকে ডেটা কুয়েরি করতে পারবেন:

query {
  products {
    id
    title
    price
    description
  }
}

এবং, আপনি যদি একটি নির্দিষ্ট প্রোডাক্টের তথ্য চান:

query {
  product(id: 1) {
    id
    title
    price
    description
  }
}

এগুলো Apollo Federation ব্যবহার করে আপনার REST API কে GraphQL API-তে রূপান্তর করবে এবং ডেটা ফিরিয়ে দিবে।


সারাংশ

Apollo Federation ব্যবহার করে REST API-কে একটি GraphQL API-তে রূপান্তর করা সহজ এবং কার্যকরী। এটি একটি মডুলার আর্কিটেকচার তৈরি করতে সাহায্য করে, যেখানে আপনি একাধিক সার্ভিস বা মাইক্রো সার্ভিসের GraphQL ইন্টিগ্রেশন করতে পারেন। এই পদ্ধতিতে, Apollo Server, RESTDataSource, এবং Federation এর সাহায্যে আপনি আপনার REST API থেকে ডেটা নিয়ে আসতে এবং একটি একক GraphQL API তৈরি করতে পারেন যা অন্যান্য সার্ভিসের সাথে একত্রিত হতে সক্ষম।

Content added By
Promotion

Are you sure to start over?

Loading...