Middleware কী এবং কেন প্রয়োজন?

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর Middleware এবং Custom Middleware তৈরি
213

Middleware হল একটি প্রক্রিয়া যা রিকোয়েস্ট এবং রেসপন্সের মধ্যে প্রক্রিয়া চলে। এটি সাধারণত রিকোয়েস্ট প্রাপ্ত হওয়ার আগে বা রেসপন্স ফেরত দেওয়ার আগে একাধিক কাজ সম্পাদন করতে ব্যবহৃত হয়। FastAPI-তে, Middleware HTTP রিকোয়েস্টের জন্য একটি স্তর হিসাবে কাজ করে, এবং এটি সার্ভারের কাজের মধ্যে অতিরিক্ত কার্যকলাপ যুক্ত করতে ব্যবহার করা হয়।

Middleware ব্যবহার করে আপনি রিকোয়েস্ট বা রেসপন্স প্রসেসিংয়ে পরিবর্তন আনতে পারেন, যেমন লগিং, অথেনটিকেশন, সিকিউরিটি চেকিং, এবং রিকোয়েস্টের জন্য সেন্ট্রালাইজড হ্যান্ডলিং।


FastAPI-তে Middleware কীভাবে কাজ করে?

FastAPI-তে Middleware একটি ক্লাস বা ফাংশন যা প্রতিটি রিকোয়েস্টের আগে এবং পরে কার্যকর হয়। আপনি Middleware এর মাধ্যমে রিকোয়েস্ট প্রসেস করতে পারেন এবং রেসপন্স তৈরি করার আগেই কোন অতিরিক্ত কাজ সম্পাদন করতে পারেন।

FastAPI-তে Middleware সাধারণত BaseHTTPMiddleware ব্যবহার করে তৈরি করা হয়। এটি starlette.middleware.base থেকে আসে, যেটি FastAPI এর অ্যাপ্লিকেশন স্ট্যাকের উপর ভিত্তি করে কাজ করে।


Middleware এর প্রয়োজনীয়তা কেন?

১. রিকোয়েস্ট লজিক কেন্দ্রীকরণ:

Middleware ব্যবহার করে আপনি বারবার ব্যবহৃত কোড এক জায়গায় কেন্দ্রীভূত করতে পারেন। যেমন, একাধিক এন্ডপয়েন্টের জন্য লগিং বা অথেনটিকেশন চেকিং করতে, আপনি একটি সাধারণ Middleware ব্যবহার করতে পারেন।

২. অথেনটিকেশন এবং অথোরাইজেশন:

Middleware ব্যবহার করে আপনি ব্যবহারকারীর অথেনটিকেশন বা অথোরাইজেশন চেক করতে পারেন। এতে করে একই কোড বারবার এন্ডপয়েন্টে ব্যবহার না করে একযোগভাবে সার্ভারের স্তরে সুরক্ষা নিশ্চিত করা হয়।

৩. লগিং এবং মনিটরিং:

Middleware ব্যবহার করে সমস্ত রিকোয়েস্ট এবং রেসপন্সের জন্য লগ রাখা যায়, যা সিস্টেম মনিটরিং এবং ত্রুটি সনাক্তকরণে সহায়ক হতে পারে।

৪. রিকোয়েস্ট এবং রেসপন্স পরিবর্তন:

কিছু Middleware রিকোয়েস্ট বা রেসপন্সে পরিবর্তন করতে পারে। যেমন, হেডার যোগ করা, রিকোয়েস্ট প্যারামিটার বদলানো, রেসপন্স কন্টেন্ট প্রসেস করা ইত্যাদি।

৫. কাস্টম সিকিউরিটি চেক:

আপনার API বা অ্যাপ্লিকেশনে কাস্টম সিকিউরিটি চেক করার জন্য Middleware ব্যবহার করা যেতে পারে। যেমন, API কিওর চেক, ডোজ (DoS) আক্রমণ প্রতিরোধ ইত্যাদি।


FastAPI-তে Middleware কিভাবে কাজ করে?

FastAPI তে Middleware তৈরি করার জন্য BaseHTTPMiddleware ক্লাসটি ব্যবহার করা হয়। এখানে একটি সাধারণ উদাহরণ দেওয়া হলো:

উদাহরণ: Basic Middleware in FastAPI

from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware

class CustomMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request, call_next):
        # রিকোয়েস্ট আসার আগে কাজ
        print(f"Request URL: {request.url}")
        
        # রিকোয়েস্ট প্রসেস করা হচ্ছে
        response = await call_next(request)
        
        # রেসপন্স আসার পরে কাজ
        response.headers['X-Custom-Header'] = 'Hello from Middleware'
        
        return response

app = FastAPI()

# Middleware যুক্ত করা
app.add_middleware(CustomMiddleware)

@app.get("/")
async def read_root():
    return {"message": "Hello, FastAPI!"}

এখানে:

  • dispatch মেথডটি রিকোয়েস্ট আসার আগে এবং রেসপন্স তৈরি হওয়ার পরে কার্যকর হয়।
  • call_next হল একটি ফাংশন যা পরবর্তী রিকোয়েস্ট প্রসেসিং করে এবং রেসপন্স ফিরিয়ে আনে।
  • response.headers ব্যবহার করে কাস্টম হেডার যোগ করা হয়েছে।

রেসপন্স:

যখন আপনি / এন্ডপয়েন্টে রিকোয়েস্ট করবেন, তখন রেসপন্সে X-Custom-Header হেডার সহ ফিরবে।

{
  "message": "Hello, FastAPI!"
}

এবং রেসপন্স হেডার:

X-Custom-Header: Hello from Middleware

FastAPI-তে বিভিন্ন Middleware ব্যবহার

FastAPI-তে আপনি বিভিন্ন কাজের জন্য বহু ধরনের Middleware ব্যবহার করতে পারেন। কিছু উদাহরণ:

১. CORS (Cross-Origin Resource Sharing) Middleware:

CORS সেটআপ করার জন্য FastAPI-তে CORSMiddleware ব্যবহার করা হয়, যা আপনার API কে অন্যান্য ডোমেইন থেকে রিকোয়েস্ট প্রক্রিয়া করতে দেয়।

from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware

app = FastAPI()

# CORS Middleware যুক্ত করা
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # সকল উৎস থেকে রিকোয়েস্ট অনুমোদন
    allow_credentials=True,
    allow_methods=["*"],  # সকল HTTP মেথড অনুমোদন
    allow_headers=["*"],  # সকল হেডার অনুমোদন
)

@app.get("/")
async def read_root():
    return {"message": "Hello, FastAPI with CORS!"}

২. Session Middleware:

আপনি যদি ক্লায়েন্টের সাথে সেশন সংরক্ষণ করতে চান, তবে SessionMiddleware ব্যবহার করতে পারেন।

from starlette.middleware.sessions import SessionMiddleware

app.add_middleware(SessionMiddleware, secret_key="mysecret")

FastAPI Middleware কাস্টমাইজেশন

FastAPI-তে Middleware কাস্টমাইজ করা যায় যেখানে আপনি রিকোয়েস্ট এবং রেসপন্স উভয়ের উপর নিয়ন্ত্রণ রাখতে পারেন। আপনি সহজেই রিকোয়েস্টের হেডার, কুকি, এবং রেসপন্সের কন্টেন্ট পরিবর্তন করতে পারেন।

উদাহরণ: Request এবং Response কাস্টমাইজেশন

from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware

class CustomMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request, call_next):
        # রিকোয়েস্ট হেডার পরিবর্তন
        request.headers['X-Custom-Request-Header'] = 'Custom Header Value'
        
        # রেসপন্স তৈরির পরে হেডার পরিবর্তন
        response = await call_next(request)
        response.headers['X-Custom-Response-Header'] = 'Response Header Value'
        
        return response

app = FastAPI()

# কাস্টম Middleware যুক্ত করা
app.add_middleware(CustomMiddleware)

@app.get("/")
async def read_root():
    return {"message": "Custom middleware is working!"}

Middleware FastAPI-তে একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা রিকোয়েস্ট এবং রেসপন্সের উপর নিয়ন্ত্রণ দেয়। এটি বিভিন্ন কার্যকলাপের জন্য যেমন লগিং, অথেনটিকেশন, সিকিউরিটি, এবং অন্যান্য সাধারণ ফিচার হ্যান্ডল করতে ব্যবহৃত হয়। Middleware ব্যবহার করে আপনি অ্যাপ্লিকেশনের কার্যকারিতা সহজেই কাস্টমাইজ এবং প্রসারিত করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...