GraphQL Gateway ব্যবহার করে REST API ব্যবস্থাপনা হল একটি আধুনিক পদ্ধতি যা গ্রাফকিউএল-এর শক্তি ব্যবহার করে REST API-এর কার্যকারিতা একত্রিত করে এবং একটি একক GraphQL API তৈরি করে। এটি বিশেষভাবে উপকারী যখন আপনার মাইক্রোসার্ভিস বা বিভিন্ন REST API রয়েছে এবং আপনি তাদের একত্রিত করে একটি মধ্যস্থতাকারী API তৈরি করতে চান।
এখানে, GraphQL Gateway এর মাধ্যমে REST API ব্যবস্থাপনা করার পদ্ধতি বিস্তারিতভাবে ব্যাখ্যা করা হলো।
GraphQL Gateway কী?
GraphQL Gateway হল একটি কাস্টম API গেটওয়ে যা multiple GraphQL APIs এবং REST APIs একত্রিত করে একটি ইউনিফাইড API প্রদান করে। এটি ব্যবহারকারীদের একক GraphQL কুয়েরি-এর মাধ্যমে বিভিন্ন REST API বা GraphQL API-এর ডেটা একত্রে নিয়ে আসতে সক্ষম করে।
GraphQL Gateway গ্রাফকিউএল সার্ভিসের স্কিমা গুলি একত্রিত করে, এবং তাদের মধ্যে ডেটা এক্সচেঞ্জের জন্য একটি সিঙ্গেল এক্সেস পয়েন্ট সরবরাহ করে।
GraphQL Gateway এর কাজ:
- একাধিক REST API থেকে ডেটা একত্রিত করা।
- সমস্ত REST API কুয়েরি বা মিউটেশনকে একটি GraphQL API এর মধ্যে ফেডারেট করা।
- Backend সার্ভিস বা ডেটাবেসের মধ্যে একটি single point of entry তৈরি করা।
GraphQL Gateway ব্যবহার করে REST API Integration
ধরা যাক, আপনার অ্যাপ্লিকেশনে কিছু REST API রয়েছে যা পৃথকভাবে বিভিন্ন ডেটা সার্ভিস (যেমন, ইউজার ডেটা, প্রোডাক্ট ডেটা, ইত্যাদি) প্রদান করে। আপনি যদি একটি GraphQL API তৈরি করতে চান যা এই সমস্ত REST API থেকে ডেটা একত্রিত করবে, তাহলে Apollo Server এবং Apollo Gateway ব্যবহার করে এটি বাস্তবায়ন করা সম্ভব।
ধাপ ১: REST API থেকে ডেটা নেওয়া
ধরা যাক, আমাদের দুটি REST API রয়েছে:
- User API: ব্যবহারকারীদের তথ্য প্রদান করে।
- Product API: প্রোডাক্টের তথ্য প্রদান করে।
আমরা এই দুটি REST API কে GraphQL Gateway মাধ্যমে একত্রিত করতে চাই।
ধাপ ২: Apollo Server এর মাধ্যমে REST API ইন্টিগ্রেশন
Apollo Server একটি GraphQL সার্ভার তৈরি করতে ব্যবহৃত হয় যা REST API-এর সাথে সংযুক্ত থাকে। আপনি Apollo Server ব্যবহার করে RESTDataSource ক্লাসটি ব্যবহার করতে পারেন, যা REST API থেকে ডেটা ফেচ করতে সহায়ক।
- User Service (REST API):
const { RESTDataSource } = require('apollo-datasource-rest');
class UserAPI extends RESTDataSource {
constructor() {
super();
this.baseURL = 'https://jsonplaceholder.typicode.com/';
}
async getUser(id) {
return this.get(`users/${id}`);
}
}
module.exports = UserAPI;
- Product Service (REST API):
const { RESTDataSource } = require('apollo-datasource-rest');
class ProductAPI extends RESTDataSource {
constructor() {
super();
this.baseURL = 'https://fakestoreapi.com/';
}
async getProduct(id) {
return this.get(`products/${id}`);
}
}
module.exports = ProductAPI;
এখানে:
- UserAPI এবং ProductAPI ক্লাস ব্যবহার করে REST API থেকে ডেটা ফেচ করা হয়েছে।
ধাপ ৩: Apollo Gateway সেটআপ
এখন, আমরা Apollo Gateway ব্যবহার করে এই দুটি REST API থেকে ডেটা একত্রিত করব। আমরা দুটি সাবস্কিমা তৈরি করেছি — একটি ইউজার API এর জন্য এবং একটি প্রোডাক্ট API এর জন্য। তারপর Apollo Gateway সেইসব স্কিমাকে একত্রিত করবে।
const { ApolloServer, gql } = require('apollo-server');
const { ApolloGateway } = require('@apollo/gateway');
const UserAPI = require('./userAPI');
const ProductAPI = require('./productAPI');
// Gateway configuration
const gateway = new ApolloGateway({
serviceList: [
{ name: 'users', url: 'http://localhost:4001' }, // User service
{ name: 'products', url: 'http://localhost:4002' } // Product service
]
});
const server = new ApolloServer({
gateway,
subscriptions: false // subscriptions disabled
});
server.listen(4000).then(({ url }) => {
console.log(`Server ready at ${url}`);
});
এখানে:
- Apollo Gateway ব্যবহার করে আমরা দুটি আলাদা REST API সার্ভিসের স্কিমা একত্রিত করেছি, এবং একটি single GraphQL API তৈরি করেছি।
ধাপ ৪: Query করার উদাহরণ
এখন আপনি একটি সাধারণ GraphQL Query ব্যবহার করে দুটি REST API থেকে ডেটা একত্রে পেতে পারবেন:
query {
user(id: 1) {
name
email
}
product(id: 1) {
title
price
}
}
এখানে:
user(id: 1)কুয়েরি User API থেকে ইউজারের তথ্য নিয়ে আসবে।product(id: 1)কুয়েরি Product API থেকে প্রোডাক্টের তথ্য নিয়ে আসবে।
Apollo Gateway সমস্ত REST API থেকে ডেটা একত্রিত করে একক GraphQL API এর মাধ্যমে তা প্রদান করবে।
GraphQL Gateway এর মাধ্যমে REST API ব্যবস্থাপনা এর সুবিধা
- Centralized API: বিভিন্ন REST API-এর ডেটা একত্রিত করে একটি centralized GraphQL API তৈরি করা সম্ভব, যা ডেভেলপারদের জন্য সহজ এবং সুবিধাজনক।
- Single Entry Point: একটি একক API ব্যবহার করে, ক্লায়েন্টরা সমস্ত ডেটা একত্রে এক্সেস করতে পারে, এবং সার্ভারের উপর অতিরিক্ত চাপ কমে যায়।
- Scalability: নতুন REST API বা GraphQL সার্ভিস সহজে যোগ করা যায়, এবং সমস্ত সার্ভিস একত্রিত হয়ে একটি সুসংহত GraphQL API প্রদান করে।
- Flexibility: গ্রাহকরা শুধুমাত্র প্রয়োজনীয় ডেটা চেয়ে নিতে পারে, ফলে over-fetching সমস্যাও এড়ানো যায়।
- Easy Integration: আপনি যদি বিদ্যমান REST API ব্যবস্থাকে GraphQL API তে একত্রিত করতে চান, তাহলে Apollo Server এবং Apollo Gateway সহজেই সেটআপ করা যায়।
সারাংশ
GraphQL Gateway একটি অত্যন্ত কার্যকরী উপায় REST API ব্যবস্থাপনা করার জন্য। এটি একাধিক REST API কে একত্রিত করে একক GraphQL API প্রদান করতে সক্ষম করে, যার ফলে ক্লায়েন্টরা সমস্ত তথ্য একত্রে সহজে পেতে পারে। Apollo Server এবং Apollo Gateway ব্যবহার করে, আপনি দ্রুত এবং কার্যকরীভাবে REST API Integration পরিচালনা করতে পারেন এবং আপনার অ্যাপ্লিকেশনের স্কেলবিলিটি এবং কার্যকারিতা বাড়াতে পারেন।
Read more