{
“@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-এর সাথে একত্রিত হয়ে, আপনি একটি শক্তিশালী, উত্পাদন-প্রস্তুত স্ট্যাক পাবেন যা ভালভাবে মাপসই করে।
📋 Table of Contents
এই টিউটোরিয়ালটি শূন্য থেকে ডিপ্লোয়মেন্ট পর্যন্ত একটি সম্পূর্ণ টাস্ক ম্যানেজমেন্ট 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-এর জন্য একটি শক্ত ভিত্তি — লাইভ হওয়ার আগে প্রমাণীকরণ মিডলওয়্যার, রেট লিমিটিং এবং মনিটরিং যোগ করুন।
🔗 Share this article
✍️ Leave a Comment