🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

কিভাবে 2026 সালে FastAPI এবং PostgreSQL দিয়ে একটি REST API তৈরি করবেন: সম্পূর্ণ টিউটোরিয়াল

⏱️4 min read  ·  752 words

{
“@context”: “https://schema.org”,
“@type”: “TechArticle”,
“headline”: “কিভাবে 2026 সালে FastAPI এবং PostgreSQL দিয়ে একটি REST API তৈরি করবেন: সম্পূর্ণ টিউটোরিয়াল”,
“description”: “FastAPI, PostgreSQL, SQLAlchemy, এবং Docker ব্যবহার করে স্ক্র্যাচ থেকে একটি উৎপাদন-প্রস্তুত REST API তৈরি করুন। প্রমাণীকরণ, CRUD, এবং স্থাপনার সাথে সম্পূর্ণ করুন।”,
“url”: “https://techpulsesite.com/how-to-build-a-rest-api-with-fastapi-and-bn/”,
“datePublished”: “2026-06-24T11:20:00+00:00”,
“dateModified”: “2026-06-29T04:14:53+00:00”,
“author”: {
“@type”: “Organization”,
“name”: “TechPulse Editorial Team”,
“url”: “https://techpulsesite.com”
},
“publisher”: {
“@type”: “Organization”,
“name”: “TechPulse”,
“url”: “https://techpulsesite.com”
},
“inLanguage”: “bn”
}

{
“@context”: “https://schema.org”,
“@type”: “TechArticle”,
“headline”: “কিভাবে 2026 সালে FastAPI এবং PostgreSQL দিয়ে একটি REST API তৈরি করবেন: সম্পূর্ণ টিউটোরিয়াল”,
“description”: “FastAPI, PostgreSQL, SQLAlchemy, এবং Docker ব্যবহার করে স্ক্র্যাচ থেকে একটি উৎপাদন-প্রস্তুত REST API তৈরি করুন। প্রমাণীকরণ, CRUD, এবং স্থাপনার সাথে সম্পূর্ণ করুন।”,
“url”: “https://techpulsesite.com/how-to-build-a-rest-api-with-fastapi-and-bn/”,
“datePublished”: “2026-06-24T11:20:00+00:00”,
“dateModified”: “2026-06-21T05:55:29+00:00”,
“author”: {
“@type”: “Organization”,
“name”: “TechPulse Editorial Team”,
“url”: “https://techpulsesite.com”
},
“publisher”: {
“@type”: “Organization”,
“name”: “TechPulse”,
“url”: “https://techpulsesite.com”
},
“inLanguage”: “bn”
}

ফাস্টএপিআই 2026 সালে Python REST API-এর জন্য সোনার মান হয়ে উঠেছে — এটি ফ্লাস্কের চেয়ে দ্রুততর, Pydantic v2 এর মাধ্যমে অন্তর্নির্মিত ডেটা বৈধতা রয়েছে, OpenAPI ডক্স স্বয়ংক্রিয়ভাবে তৈরি করে এবং সম্পূর্ণরূপে অ্যাসিঙ্ক করা হয়েছে। PostgreSQL এবং SQLAlchemy-এর সাথে একত্রিত হয়ে, আপনি একটি শক্তিশালী, উত্পাদন-প্রস্তুত স্ট্যাক পাবেন যা ভালভাবে মাপসই করে।

এই টিউটোরিয়ালটি শূন্য থেকে ডিপ্লোয়মেন্ট পর্যন্ত একটি সম্পূর্ণ টাস্ক ম্যানেজমেন্ট API তৈরি করে।

পূর্বশর্ত

  • পাইথন 3.11+ ইনস্টল করা হয়েছে
  • PostgreSQL 15+ চলমান (বা ডকার)
  • REST ধারণা এবং পাইথন সম্পর্কে প্রাথমিক ধারণা

প্রকল্প সেটআপ

mkdir taskapi && cd taskapi
python -m venv venv && source venv/bin/activate
pip install fastapi uvicorn sqlalchemy psycopg2-binary pydantic python-jose passlib python-dotenv alembic

প্রকল্প কাঠামো তৈরি করুন:

taskapi/
├── app/
│   ├── __init__.py
│   ├── main.py
│   ├── database.py
│   ├── models.py
│   ├── schemas.py
│   ├── crud.py
│   └── routers/
│       ├── tasks.py
│       └── auth.py
├── .env
└── requirements.txt

ডাটাবেস কনফিগারেশন

In .env:

DATABASE_URL=postgresql://user:password@localhost:5432/taskdb
SECRET_KEY=your-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

In app/database.py:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, DeclarativeBase
from dotenv import load_dotenv
import os

load_dotenv()
DATABASE_URL = os.getenv("DATABASE_URL")

engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

class Base(DeclarativeBase):
    pass

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

মডেল এবং স্কিমাস

In app/models.py:

from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey
from sqlalchemy.sql import func
from .database import Base

class User(Base):
    __tablename__ = "users"
    id         = Column(Integer, primary_key=True, index=True)
    email      = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active  = Column(Boolean, default=True)
    created_at = Column(DateTime(timezone=True), server_default=func.now())

class Task(Base):
    __tablename__ = "tasks"
    id          = Column(Integer, primary_key=True, index=True)
    title       = Column(String, index=True)
    description = Column(String, nullable=True)
    completed   = Column(Boolean, default=False)
    owner_id    = Column(Integer, ForeignKey("users.id"))
    created_at  = Column(DateTime(timezone=True), server_default=func.now())

In app/schemas.py:

from pydantic import BaseModel, EmailStr
from datetime import datetime
from typing import Optional

class TaskCreate(BaseModel):
    title: str
    description: Optional[str] = None

class TaskResponse(TaskCreate):
    id: int
    completed: bool
    owner_id: int
    created_at: datetime
    class Config:
        from_attributes = True

class UserCreate(BaseModel):
    email: EmailStr
    password: str

class Token(BaseModel):
    access_token: str
    token_type: str

CRUD অপারেশন

In app/crud.py:

from sqlalchemy.orm import Session
from . import models, schemas
from passlib.context import CryptContext

pwd_context = CryptContext(schemes=["bcrypt"])

def get_user_by_email(db: Session, email: str):
    return db.query(models.User).filter(models.User.email == email).first()

def create_user(db: Session, user: schemas.UserCreate):
    hashed = pwd_context.hash(user.password)
    db_user = models.User(email=user.email, hashed_password=hashed)
    db.add(db_user); db.commit(); db.refresh(db_user)
    return db_user

def get_tasks(db: Session, owner_id: int, skip=0, limit=100):
    return db.query(models.Task).filter(
        models.Task.owner_id == owner_id).offset(skip).limit(limit).all()

def create_task(db: Session, task: schemas.TaskCreate, owner_id: int):
    db_task = models.Task(**task.model_dump(), owner_id=owner_id)
    db.add(db_task); db.commit(); db.refresh(db_task)
    return db_task

def update_task(db: Session, task_id: int, completed: bool):
    task = db.query(models.Task).filter(models.Task.id == task_id).first()
    if task:
        task.completed = completed; db.commit(); db.refresh(task)
    return task

প্রধান আবেদন এবং রুট

In app/main.py:

from fastapi import FastAPI
from .database import engine
from . import models
from .routers import tasks, auth

models.Base.metadata.create_all(bind=engine)

app = FastAPI(title="Task API", version="1.0.0")
app.include_router(auth.router, prefix="/auth", tags=["auth"])
app.include_router(tasks.router, prefix="/tasks", tags=["tasks"])

@app.get("/health")
def health(): return {"status": "ok"}

এর সাথে চালান:uvicorn app.main:app --reload

দেখুনhttp://localhost:8000/docs স্বয়ংক্রিয়ভাবে তৈরি সোয়াগার UI এর জন্য।

ডকারের সাথে স্থাপন করা হচ্ছে

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

সাথেdocker-compose.yml:

services:
  api:
    build: .
    ports: ["8000:8000"]
    env_file: .env
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: taskdb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

উৎপাদনের জন্য সর্বোত্তম অনুশীলন

  • ব্যবহার করুনঅ্যালেম্বিক ডাটাবেস মাইগ্রেশনের পরিবর্তেcreate_all()
  • যোগ করুনহার সীমিত সাথেslowapi প্যাকেজ
  • ব্যবহার করুনasync SQLAlchemy সাথেasyncpg উচ্চ সঙ্গতি জন্য ড্রাইভার
  • যোগ করুনরেডিস ক্যাশিং প্রায়শই পড়া শেষ পয়েন্টগুলির জন্য
  • সেট আপসেন্ট্রি উৎপাদনে ত্রুটি ট্র্যাকিংয়ের জন্য
  • API গ্রাহকদের কাছে কখনই কাঁচা ডাটাবেস ত্রুটি প্রকাশ করবেন না

প্রায়শই জিজ্ঞাসিত প্রশ্ন

প্রশ্ন: ফাস্টএপিআই বনাম জ্যাঙ্গো REST ফ্রেমওয়ার্ক 2026 সালে?
উত্তর: FastAPI দ্রুত, আরও ভাল অ্যাসিঙ্ক সমর্থন রয়েছে এবং কম বয়লারপ্লেট প্রয়োজন৷ Django DRF জটিল অ্যাডমিন প্যানেল, ORM বৈশিষ্ট্য এবং ইতিমধ্যে Django ব্যবহার করা দলগুলির জন্য ভাল।

প্রশ্নঃ আমি কিভাবে ডাটাবেস মাইগ্রেশন পরিচালনা করব?
A: Alembic ব্যবহার করুন:alembic init alembic, আপনার ডাটাবেস URL কনফিগার করুন, তারপরalembic revision --autogenerate -m "init" এবংalembic upgrade head.

প্রশ্নঃ আমি কিভাবে পেজিনেশন যোগ করব?
উঃ যোগ করুনskip: int = 0, limit: int = 20 আপনার এন্ডপয়েন্টের পরামিতি, তারপর.offset(skip).limit(limit)ব্যবহার করুন৷ আপনার প্রশ্নে

প্রশ্ন: SQLAlchemy 2.0 কি 2026 সালে ব্যবহার করার উপযুক্ত?
উত্তরঃ একেবারেই। 2.0 শৈলীselect() অ্যাসিঙ্ক ব্যবহারের জন্য বিবৃতিগুলি পরিষ্কার, দ্রুত এবং আরও ভাল। সমস্ত নতুন প্রকল্প এটি ব্যবহার করা উচিত.

প্রশ্নঃ আমি কিভাবে ব্যাকগ্রাউন্ড টাস্ক যোগ করব?
উত্তর: ফাস্টএপিআই বিল্ট-ইন আছেBackgroundTasks সাধারণ ক্ষেত্রে। জটিল কর্মপ্রবাহের জন্য, ব্রোকার হিসাবে রেডিসের সাথে সেলারি ব্যবহার করুন।

উপসংহার

FastAPI + PostgreSQL + SQLAlchemy হল 2026 সালে উপলব্ধ সেরা পাইথন ব্যাকএন্ড স্ট্যাকগুলির মধ্যে একটি। আপনি স্বয়ংক্রিয় ডকুমেন্টেশন, টাইপ-নিরাপদ অনুরোধ/প্রতিক্রিয়া হ্যান্ডলিং, দ্রুত অ্যাসিঙ্ক কর্মক্ষমতা এবং একটি পরিণত, যুদ্ধ-পরীক্ষিত ডাটাবেস স্তর পাবেন। এই টিউটোরিয়ালের সম্পূর্ণ কোড হল যেকোন প্রোডাকশন API-এর জন্য একটি শক্ত ভিত্তি — লাইভ হওয়ার আগে প্রমাণীকরণ মিডলওয়্যার, রেট লিমিটিং এবং মনিটরিং যোগ করুন।

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা