RESTful APIs হল একটি জনপ্রিয় আর্কিটেকচারাল স্টাইল, যা HTTP প্রটোকলের উপর ভিত্তি করে বিভিন্ন ধরনের ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ প্রতিষ্ঠা করে। Ruby ভাষায় RESTful API তৈরি এবং কনজিউম (consume) করার জন্য বেশ কিছু টুল এবং লাইব্রেরি রয়েছে। সবচেয়ে সাধারণ লাইব্রেরি যা রুবিতে RESTful API তৈরি এবং কনজিউম করতে ব্যবহৃত হয় তা হলো Rails (একটি রুবি ফ্রেমওয়ার্ক) এবং HTTParty বা RestClient (অন্য লাইব্রেরি)।
এখানে আমরা আলোচনা করবো কীভাবে রুবির মাধ্যমে একটি RESTful API তৈরি করা যায় এবং API থেকে ডেটা পাঠানো বা গ্রহণ করা যায়।
১. RESTful API তৈরি করা Ruby on Rails এর মাধ্যমে
Ruby on Rails একটি খুবই জনপ্রিয় ফ্রেমওয়ার্ক, যা RESTful API তৈরি করতে সাহায্য করে। Rails সাধারণত GET, POST, PUT, PATCH, DELETE HTTP মেথড ব্যবহার করে API রাউটিং সহজভাবে পরিচালনা করে। Rails-এ API তৈরি করার জন্য কিছু সাধারণ ধাপ:
১.1. Rails API তৈরি করা
রেলসের মাধ্যমে একটি API অ্যাপ্লিকেশন তৈরি করতে, আপনি --api অপশন ব্যবহার করতে পারেন, যা শুধুমাত্র API সম্পর্কিত ফিচার এবং কমপোনেন্ট ব্যবহার করবে।
rails new my_api_app --apiএই কমান্ডটি একটি নতুন Rails অ্যাপ্লিকেশন তৈরি করবে যেটি API-centric (API ভিত্তিক) অ্যাপ্লিকেশন হবে।
১.2. Controller তৈরি করা
API রাউটের জন্য একটি controller তৈরি করুন, যেখানে API এর বিভিন্ন রিকোয়েস্টের জন্য মেথড থাকবে।
rails generate controller Usersএটি একটি UsersController তৈরি করবে। এখন, আমরা এখানে একটি RESTful API মেথড যোগ করতে পারি।
১.3. UsersController তৈরি করা
class UsersController < ApplicationController
# GET /users
def index
@users = User.all
render json: @users
end
# POST /users
def create
@user = User.new(user_params)
if @user.save
render json: @user, status: :created
else
render json: @user.errors, status: :unprocessable_entity
end
end
# GET /users/:id
def show
@user = User.find(params[:id])
render json: @user
end
# PUT /users/:id
def update
@user = User.find(params[:id])
if @user.update(user_params)
render json: @user
else
render json: @user.errors, status: :unprocessable_entity
end
end
# DELETE /users/:id
def destroy
@user = User.find(params[:id])
@user.destroy
head :no_content
end
private
def user_params
params.require(:user).permit(:name, :email, :age)
end
endএখানে, আমরা index, create, show, update, এবং destroy মেথডগুলি তৈরি করেছি, যা CRUD (Create, Read, Update, Delete) অপারেশনগুলিকে API হিসেবে পরিচালনা করে।
১.4. Routes সেটআপ করা
রাউটের মাধ্যমে আমরা API এর URL এবং HTTP মেথডগুলোকে মাপ (map) করি।
# config/routes.rb
Rails.application.routes.draw do
resources :users
endএটি users রিসোর্সের জন্য RESTful রাউটিং তৈরি করবে।
১.5. Model তৈরি করা
এখন, আমরা User মডেল তৈরি করব যাতে ডেটাবেসের টেবিলটি ধারণ করে।
rails generate model User name:string email:string age:integer
rails db:migrateএটি users টেবিল তৈরি করবে এবং name, email, age কলাম যোগ করবে।
১.6. API ব্যবহার করা
API তৈরি করার পরে, আপনি HTTP রিকোয়েস্ট যেমন GET, POST, PUT, এবং DELETE ব্যবহার করে API থেকে ডেটা পাঠাতে বা গ্রহণ করতে পারেন।
২. Ruby এর মাধ্যমে RESTful API কনজিউম করা
RESTful API কনজিউম করার জন্য রুবিতে কিছু জনপ্রিয় লাইব্রেরি রয়েছে, যেমন HTTParty এবং RestClient। এখানে HTTParty ব্যবহার করে API কনজিউম করার একটি উদাহরণ দেওয়া হলো।
২.1. HTTParty ইনস্টল করা
প্রথমে, আপনার রুবি প্রজেক্টে HTTParty ইনস্টল করতে হবে। আপনার Gemfile-এ এটি যোগ করুন:
gem 'httparty'তারপর, bundle install চালিয়ে গেমটি ইনস্টল করুন।
২.2. HTTParty ব্যবহার করে GET রিকোয়েস্ট করা
require 'httparty'
class ApiClient
include HTTParty
base_uri 'https://jsonplaceholder.typicode.com'
def get_users
self.class.get('/users')
end
end
client = ApiClient.new
response = client.get_users
puts response.bodyএখানে, base_uri নির্ধারণ করা হয়েছে এবং get_users মেথডে GET রিকোয়েস্ট করা হয়েছে। response.body দিয়ে আমরা API থেকে প্রাপ্ত ডেটা মুদ্রণ করেছি।
২.3. HTTParty ব্যবহার করে POST রিকোয়েস্ট করা
require 'httparty'
class ApiClient
include HTTParty
base_uri 'https://jsonplaceholder.typicode.com'
def create_user(name, email)
self.class.post('/users', body: { name: name, email: email })
end
end
client = ApiClient.new
response = client.create_user("Alice", "alice@example.com")
puts response.bodyএখানে, create_user মেথডে POST রিকোয়েস্ট করা হয়েছে, যেখানে name এবং email প্যারামিটার হিসেবে পাঠানো হয়েছে।
২.4. Error Handling
API রিকোয়েস্টের জন্য ত্রুটি হ্যান্ডলিংও করা যায়। উদাহরণস্বরূপ, HTTParty দিয়ে ত্রুটি চেক করা:
response = client.get_users
if response.success?
puts "Data received: #{response.body}"
else
puts "Error: #{response.code}"
endএখানে, যদি রিকোয়েস্ট সফল না হয়, তাহলে আমরা HTTP স্টেটাস কোড দেখাচ্ছি।
সারসংক্ষেপ
- RESTful API তৈরি করার জন্য রুবি অন রেলস একটি শক্তিশালী ফ্রেমওয়ার্ক, যেখানে আপনি
GET,POST,PUT,DELETEHTTP মেথড ব্যবহার করে ডেটা ম্যানিপুলেশন করতে পারেন। - HTTParty বা RestClient লাইব্রেরি ব্যবহার করে রুবি থেকে RESTful API কনজিউম করা যায়, যেখানে HTTP রিকোয়েস্ট করা হয় এবং API থেকে ডেটা পাওয়া বা পাঠানো হয়।
- রুবি দ্বারা RESTful APIs তৈরির সময় MVC প্যাটার্ন অনুসরণ করে ডেটাবেস, মডেল, কন্ট্রোলার এবং রাউটিং সঠিকভাবে ব্যবহার করা হয়।
এটি রুবি এবং রেলসের মাধ্যমে RESTful API তৈরি এবং কনজিউম করার মূল ধারণা ছিল।
Read more