Ruby on Rails একটি শক্তিশালী ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন তৈরির পাশাপাশি API (Application Programming Interface) তৈরি করতে সহায়তা করে। Rails API রুটিং সিস্টেমের মাধ্যমে আপনি খুব সহজেই RESTful API তৈরি করতে পারেন। এই টিউটোরিয়ালে আমরা দেখব কীভাবে Rails দিয়ে API রুট তৈরি করা যায় এবং এর মাধ্যমে ক্লায়েন্ট অ্যাপ্লিকেশন বা অন্যান্য সার্ভিসের সঙ্গে যোগাযোগ করা যায়।
API Routes কী?
API রুট হল ওয়েব অ্যাপ্লিকেশনের এমন রাউট যেখানে ক্লায়েন্ট অ্যাপ্লিকেশন বা ফ্রন্ট-এন্ড ওয়েবসাইট সার্ভারের সাথে ডেটা এক্সচেঞ্জ করে, সাধারণত JSON ফরম্যাটে। API রাউট তৈরি করার জন্য Rails API-only মোডে কাজ করে, যাতে শুধুমাত্র API এর জন্য প্রয়োজনীয় ফিচারগুলোই ব্যবহৃত হয়, যেমন JSON রেসপন্স, কন্ট্রোলার, রাউটিং ইত্যাদি।
Rails API-only অ্যাপ্লিকেশন তৈরি করা
Rails API তৈরি করার জন্য প্রথমে API-only mode ব্যবহার করতে হবে। এই মোডে কাজ করার জন্য rails new কমান্ডে --api অপশন ব্যবহার করা হয়। এটি একটি হালকা এবং দ্রুত API সার্ভার তৈরি করে, যেখানে অপ্রয়োজনীয় ভিউ ফাইল বা সেশনের মত জিনিসগুলো অন্তর্ভুক্ত হয় না।
rails new my_api_app --api
এই কমান্ডটি একটি নতুন API অ্যাপ্লিকেশন তৈরি করবে যা শুধুমাত্র API রাউটিং, কন্ট্রোলার এবং JSON রেসপন্সের জন্য কনফিগার করা হবে।
API Routes কনফিগারেশন
Rails-এ রাউটিং config/routes.rb ফাইলে করা হয়। API রাউটের জন্য সাধারণত namespace :api ব্যবহার করা হয়, যাতে আপনার API রুটগুলো অন্য সাধারণ ওয়েব রাউটের থেকে আলাদা থাকে।
উদাহরণ:
ধরা যাক, আমাদের একটি Posts মডেল রয়েছে এবং আমরা চাই একটি API তৈরি করতে যা পোস্ট তৈরি, পড়া, আপডেট এবং মুছে ফেলতে পারবে।
routes.rb ফাইলে রুটগুলো কনফিগার করুন:
Rails.application.routes.draw do
namespace :api do
resources :posts
end
end
এখানে namespace :api দ্বারা সমস্ত API রাউট api/ নামস্পেসে থাকবে। resources :posts দ্বারা Rails স্বয়ংক্রিয়ভাবে RESTful রাউটগুলোর একটি সিরিজ তৈরি করে, যেমন:
GET /api/posts- সকল পোস্টের তালিকাGET /api/posts/:id- নির্দিষ্ট পোস্টPOST /api/posts- নতুন পোস্ট তৈরিPUT /api/posts/:id- পোস্ট আপডেটDELETE /api/posts/:id- পোস্ট মুছে ফেলা
Controller তৈরি করা
এখন, আমরা একটি API কন্ট্রোলার তৈরি করব যা আমাদের পোস্ট রাউটগুলির জন্য রিকোয়েস্ট হ্যান্ডেল করবে।
rails generate controller api/posts
এটি app/controllers/api/posts_controller.rb ফাইল তৈরি করবে, যেখানে আমাদের সকল API একশন থাকবে।
api/posts_controller.rb:
module Api
class PostsController < ApplicationController
# সকল পোস্ট দেখানোর একশন
def index
@posts = Post.all
render json: @posts
end
# নির্দিষ্ট পোস্ট দেখানোর একশন
def show
@post = Post.find(params[:id])
render json: @post
end
# নতুন পোস্ট তৈরি করার একশন
def create
@post = Post.new(post_params)
if @post.save
render json: @post, status: :created
else
render json: @post.errors, status: :unprocessable_entity
end
end
# পোস্ট আপডেট করার একশন
def update
@post = Post.find(params[:id])
if @post.update(post_params)
render json: @post
else
render json: @post.errors, status: :unprocessable_entity
end
end
# পোস্ট ডিলিট করার একশন
def destroy
@post = Post.find(params[:id])
@post.destroy
head :no_content
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
end
একশনগুলো:
index: সকল পোস্ট ফেরত দেয়।show: একটি নির্দিষ্ট পোস্ট ফেরত দেয়।create: নতুন পোস্ট তৈরি করে।update: পোস্ট আপডেট করে।destroy: পোস্ট মুছে ফেলে।
এছাড়া, post_params মেথডটি Strong Parameters ব্যবহার করে নিশ্চিত করে যে, শুধু নির্দিষ্ট অ্যাট্রিবিউটগুলো (যেমন title এবং content) পাস করা যাবে।
API রেসপন্স ফরম্যাট
Rails স্বাভাবিকভাবে JSON রেসপন্স তৈরি করে API রিকোয়েস্টগুলির জন্য, তবে আপনি যদি কাস্টম JSON আউটপুট চান, তাহলে আপনি কন্ট্রোলারের render json: মেথড ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
render json: @post, status: :created
এটি JSON ফরম্যাটে একটি সাড়া পাঠাবে, এবং HTTP স্ট্যাটাস কোড হিসেবে 201 Created সেট করবে।
API Testing
API তৈরি করার পর, আপনি এটি Postman, cURL অথবা RSpec ব্যবহার করে টেস্ট করতে পারেন।
Postman:
Postman হল একটি জনপ্রিয় টুল API টেস্টিংয়ের জন্য। আপনি সহজেই API রিকোয়েস্ট তৈরি করে রেসপন্স দেখতে পারেন।
cURL:
curl -X GET http://localhost:3000/api/posts
এই কমান্ডটি GET /api/posts রিকোয়েস্ট পাঠাবে এবং সকল পোস্টের তালিকা ফেরত পাবে।
RSpec:
Rails API টেস্ট করার জন্য আপনি RSpec ব্যবহার করতে পারেন। একটি সাধারণ API টেস্টের উদাহরণ:
require 'rails_helper'
RSpec.describe "Posts API", type: :request do
# সকল পোস্ট দেখানোর টেস্ট
describe 'GET /api/posts' do
it 'returns all posts' do
post = Post.create!(title: 'Test Post', content: 'This is a test post')
get '/api/posts'
expect(response).to have_http_status(200)
expect(response.body).to include('Test Post')
end
end
end
এই টেস্টটি /api/posts রুটে GET রিকোয়েস্ট পাঠাবে এবং রেসপন্স স্ট্যাটাস কোড চেক করবে।
সারমর্ম
Rails API Routes তৈরি করা খুবই সহজ এবং সরল। Rails রাউটিং সিস্টেমের মাধ্যমে আপনি namespace :api ব্যবহার করে API রাউট এবং কন্ট্রোলার তৈরি করতে পারেন। এটি RESTful রাউটগুলি তৈরি করতে সাহায্য করে এবং ক্লায়েন্টের সঙ্গে ডেটা আদান-প্রদান (জেমন JSON রেসপন্স) করার সুবিধা প্রদান করে। API-এ সাধারণ CRUD অপারেশনগুলো পরিচালনা করতে আপনি কন্ট্রোলার মেথডগুলো ব্যবহার করতে পারেন, এবং Postman, cURL, অথবা RSpec ব্যবহার করে API টেস্ট করতে পারেন।
Read more