پروژه‌های عملی در پایتون (بخش سوم)

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی پایتون 31 مارس 2025
اشتراک گذاری

ساخت یک API کامل با FastAPI در پایتون 


اگر دنبال یک فریم‌ورک سریع، مدرن و سبک برای ساخت API هستی، FastAPI یکی از بهترین انتخاب‌هاست! توی این آموزش، قدم‌به‌قدم یه API کامل با FastAPI می‌سازیم که قابلیت‌های زیر رو داره:


تعریف مدل داده‌ها
 دریافت و ارسال داده با JSON
اتصال به دیتابیس SQLite
ساخت مسیرهای GET, POST, PUT, DELETE
مستندسازی خودکار با Swagger


نصب FastAPI و Uvicorn


اول باید کتابخونه‌های مورد نیاز رو نصب کنیم:


pip install fastapi uvicorn sqlalchemy

ساختار پروژه


myapi/
├── main.py
├── models.py
├── schemas.py
├── database.py
└── crud.py

۱. اتصال به دیتابیس - database.py


from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
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()

۲. تعریف مدل‌ها - models.py


from sqlalchemy import Column, Integer, String
from .database import Base
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
description = Column(String)

۳. تعریف اسکیمای Pydantic - schemas.py


from pydantic import BaseModel
class ItemBase(BaseModel):
name: str
description: str
class ItemCreate(ItemBase):
pass
class Item(ItemBase):
id: int
class Config:
orm_mode = True

۴. عملیات CRUD - crud.py


from sqlalchemy.orm import Session
from . import models, schemas
def get_items(db: Session):
return db.query(models.Item).all()
def create_item(db: Session, item: schemas.ItemCreate):
db_item = models.Item(**item.dict())
db.add(db_item)
db.commit()
db.refresh(db_item)
return db_item

۵. اپلیکیشن FastAPI - main.py


from fastapi import FastAPI, Depends
from sqlalchemy.orm import Session
from . import models, schemas, crud
from .database import SessionLocal, engine, Base
Base.metadata.create_all(bind=engine)
app = FastAPI()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/items/", response_model=list[schemas.Item])
def read_items(db: Session = Depends(get_db)):
return crud.get_items(db)
@app.post("/items/", response_model=schemas.Item)
def create_item(item: schemas.ItemCreate, db: Session = Depends(get_db)):
return crud.create_item(db, item)

اجرای پروژه


uvicorn main:app --reload

الان با رفتن به http://127.0.0.1:8000/docs می‌تونی مستندات API‌ رو با Swagger ببینی و تست کنی! 

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.