FastAPI অ্যাপ্লিকেশনের একটি ভাল গঠিত স্ট্রাকচার ডেভেলপমেন্ট এবং মেইনটেন্যান্স সহজ করে। বড় ও জটিল প্রজেক্টের জন্য একটি মডুলার এবং স্কেলেবল ফোল্ডার স্ট্রাকচার প্রয়োজন। এখানে FastAPI অ্যাপ্লিকেশনের একটি সুপারিশকৃত স্ট্রাকচার দেওয়া হয়েছে।
স্ট্রাকচার উদাহরণ
my_fastapi_project/
├── app/
│ ├── main.py
│ ├── routes/
│ │ ├── __init__.py
│ │ ├── example_routes.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── example_models.py
│ ├── schemas/
│ │ ├── __init__.py
│ │ ├── example_schemas.py
│ ├── database.py
│ ├── __init__.py
├── tests/
│ ├── test_main.py
├── .env
├── requirements.txt
├── README.md
প্রতিটি ফোল্ডার এবং ফাইলের কাজ
app/main.py
এই ফাইলটি অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট। এটি FastAPI অবজেক্ট তৈরি করে এবং রাউট, ডাটাবেস, মিডলওয়্যার ইত্যাদি কনফিগার করে।
from fastapi import FastAPI
from app.routes import example_routes
app = FastAPI()
# রাউট অন্তর্ভুক্ত করা
app.include_router(example_routes.router)
@app.get("/")
def read_root():
return {"message": "Welcome to FastAPI"}
app/routes/
এই ফোল্ডারে অ্যাপ্লিকেশনের এন্ডপয়েন্ট বা রাউট সংজ্ঞায়িত করা হয়। প্রতিটি মডিউলের জন্য আলাদা ফাইল ব্যবহার করা হয়।
example_routes.py
from fastapi import APIRouter
router = APIRouter()
@router.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "query": q}
app/models/
এই ফোল্ডারে ডাটাবেস মডেল সংজ্ঞায়িত করা হয়। সাধারণত SQLAlchemy বা অন্য ORM ব্যবহার করা হয়।
example_models.py
from sqlalchemy import Column, Integer, String
from app.database import Base
class ExampleModel(Base):
__tablename__ = "examples"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
app/schemas/
এই ফোল্ডারে Pydantic ব্যবহার করে ডাটা যাচাইকরণ এবং ডাটা ট্রান্সফার অবজেক্ট তৈরি করা হয়।
example_schemas.py
from pydantic import BaseModel
class ExampleSchema(BaseModel):
name: str
description: str
class Config:
orm_mode = True
app/database.py
ডাটাবেসের সাথে সংযোগ স্থাপন এবং ORM সেটআপ করার জন্য ব্যবহৃত হয়।
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
tests/
এই ফোল্ডারে টেস্ট ফাইল রাখা হয়। FastAPI টেস্টিংয়ের জন্য pytest ব্যবহার করা হয়।
test_main.py
from fastapi.testclient import TestClient
from app.main import app
client = TestClient(app)
def test_read_root():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Welcome to FastAPI"}
.env
এই ফাইলটি পরিবেশ সংক্রান্ত ভ্যারিয়েবল সংরক্ষণে ব্যবহৃত হয়, যেমন ডাটাবেস URL বা API কীগুলি।
DATABASE_URL=sqlite:///./test.db
SECRET_KEY=mysecretkey
requirements.txt
FastAPI প্রজেক্টে ব্যবহৃত প্যাকেজগুলোর তালিকা সংরক্ষণ করা হয়। এটি ব্যবহার করে অন্য ডেভেলপার সহজে ডিপেনডেন্সি ইনস্টল করতে পারে।
fastapi
uvicorn
sqlalchemy
pydantic
pytest
python-dotenv
README.md
প্রজেক্ট সম্পর্কে বিস্তারিত তথ্য এবং সেটআপ নির্দেশিকা।
# My FastAPI Project
This is a sample FastAPI project.
## Setup Instructions
1. Install dependencies: `pip install -r requirements.txt`
2. Run the application: `uvicorn app.main:app --reload`
স্ট্রাকচার তৈরির সুবিধা
- পুনঃব্যবহারযোগ্যতা: প্রতিটি ফিচার বা মডিউল আলাদা ফোল্ডারে থাকায় সহজে ব্যবস্থাপনা করা যায়।
- স্কেলেবিলিটি: বড় প্রজেক্টের জন্য স্কেল করা সহজ।
- পরিচ্ছন্ন কোডবেস: নির্দিষ্ট ফোল্ডারে নির্দিষ্ট ফিচার রাখার ফলে কোড আরও গঠনমূলক হয়।
- সহজ টেস্টিং: আলাদা টেস্ট ফোল্ডার রাখার ফলে সহজে টেস্টিং করা যায়।
FastAPI অ্যাপ্লিকেশন স্ট্রাকচার পরিষ্কার ও সুগঠিত রাখলে প্রজেক্ট ডেভেলপমেন্ট আরও কার্যকর এবং দীর্ঘমেয়াদে সহজ হয়। এই স্ট্রাকচার অনুসরণ করে আপনি স্কেলেবল ও মডুলার অ্যাপ তৈরি করতে পারবেন।
Read more