API ساده Crud با Fastapi

مقدمه
Fastapi یک چارچوب مدرن و با کارایی بالا برای ساخت API است. این سریع ، آسان برای استفاده و مقیاس پذیر است و آن را به یک انتخاب عالی برای توسعه وب تبدیل می کند. در این پست ، ما یک API CRUD را با استفاده از FastAPI می سازیم.
🚀 آنچه یاد خواهید گرفت:
- تنظیم Fastapi
- ایجاد نقاط پایانی API
- اجرای عملیات CRUD (ایجاد ، خواندن ، به روزرسانی ، حذف)
- در حال اجرا و آزمایش API با استفاده از UI Swagger
🔗 جدید برای Fastapi؟ مستندات رسمی Fastapi را بررسی کنید.
مرحله 1: وابستگی ها را نصب کنید
1.1 یک محیط مجازی ایجاد کنید
ابتدا برای مدیریت وابستگی ها یک محیط مجازی ایجاد کنید:
# Create a virtual environment
python -m venv venv
# Activate it (Linux/macOS)
source venv/bin/activate
# Activate it (Windows)
venv\Scripts\activate
👉 چرا از یک محیط مجازی استفاده می کنیم؟ این به منزوی کردن وابستگی ها کمک می کند و از درگیری بین پروژه های مختلف جلوگیری می کند.
1.2 بسته های مورد نیاز را نصب کنید
اکنون Fastapi را به همراه UVicorn نصب کنید:
pip install fastapi uvicorn
توضیح بسته ها:
- 🐍
fastapi
→ چارچوب وب برای ساخت API - 🚀
uvicorn
→ سرور ASGI (رابط دروازه سرور ناهمزمان) برای اجرای FastAPI
مرحله 2: یک برنامه ساده FastAPI ایجاد کنید
2.1 ایجاد برنامه FastAPI
یک فایل جدید ایجاد کنید main.py
و کد زیر را اضافه کنید:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Welcome to FastAPI!"}
2.2 در حال اجرا سرور API
سرور را با استفاده از UVICORN شروع کنید. پرچم-بارگذاری به طور خودکار سرور را هنگام ذخیره تغییر کد به روز می کند:
uvicorn main:app --reload
اکنون باز است http://127.0.0.1:8000 در مرورگر خود شما باید ببینید:
{"message": "Welcome to FastAPI!"}
همچنین می توانید آن را از طریق UI swagger در آزمایش کنید http://127.0.0.1:8000/docsبشر
مرحله 3: یک مدل داده را تعریف کنید
3.1 CRUD چیست؟
Crud مخفف است ایجاد ، خواندن ، به روزرسانی و حذف، چهار عملیات اساسی انجام شده بر روی داده ها. در اینجا آنچه هر عملیاتی انجام می دهد:
- ایجاد کردن: یک رکورد جدید اضافه کنید (به عنوان مثال ، یک کاربر جدید)
- خواندن: بازیابی سوابق موجود (به عنوان مثال ، جزئیات کاربر را دریافت کنید)
- بروزرسانی: یک رکورد موجود را اصلاح کنید (به عنوان مثال ، ایمیل کاربر را تغییر دهید)
- حذف کردن: یک رکورد را حذف کنید (به عنوان مثال ، یک حساب کاربری را حذف کنید)
حال بیایید یک مدل داده را برای کاربران خود تعریف کنیم.
3.2 ایجاد طرحواره کاربر
برای رسیدگی صحیح داده ها ، ایجاد یک schemas.py
پرونده:
from pydantic import BaseModel, EmailStr
from typing import Optional
class UserBase(BaseModel):
name: str
email: EmailStr
class UserCreate(UserBase):
pass
class UserUpdate(BaseModel):
name: Optional[str] = None
email: Optional[EmailStr] = None
🔹 چرا پییدنتیک؟
- 🛡 اعتبار سنجی داده ها را بطور خودکار تضمین می کند
- ❌ پیام های خطای معنی دار را برای داده های نامعتبر برمی گرداند
3.3 خطای اعتبار سنجی مثال
ارسال ایمیل نامعتبر:
{
"name": "John Doe",
"email": "not-an-email"
}
پاسخ:
{
"detail": [
{
"loc": ["body", "email"],
"msg": "value is not a valid email address",
"type": "value_error.email"
}
]
}
مرحله 4: نقاط پایانی CRUD ایجاد کنید
4.1 اجرای عملیات CRUD
اکنون ، به روز کنید main.py
شامل عملیات CRUD:
from fastapi import FastAPI, HTTPException
from schemas import UserCreate, UserUpdate
app = FastAPI()
# Temporary storage (for demonstration purposes only, use a database in production)
users = []
@app.post("/users/")
def create_user(user: UserCreate):
"""Creates a new user and stores it in memory."""
user_id = len(users)
user_dict = user.model_dump()
user_dict["id"] = user_id
users.append(user_dict)
return {"message": "User created successfully", "user": user_dict}
@app.get("/users/")
def read_users():
"""Retrieves all users."""
return users
@app.get("/users/{user_id}")
def read_user(user_id: int):
"""Fetches a user by their ID. Returns 404 if the user is not found."""
if user_id >= len(users) or user_id < 0:
raise HTTPException(status_code=404, detail="User not found")
return users[user_id]
@app.put("/users/{user_id}")
def update_user(user_id: int, user: UserUpdate):
"""Updates a user's name and/or email. Returns 404 if the user is not found."""
if user_id >= len(users) or user_id < 0:
raise HTTPException(status_code=404, detail="User not found")
if user.name:
users[user_id]["name"] = user.name
if user.email:
users[user_id]["email"] = user.email
return {"message": "User updated successfully", "user": users[user_id]}
@app.delete("/users/{user_id}")
def delete_user(user_id: int):
"""Deletes a user by ID. Returns 404 if the user is not found."""
if user_id >= len(users) or user_id < 0:
raise HTTPException(status_code=404, detail="User not found")
users.pop(user_id)
return {"message": "User deleted successfully"}
🔹 محدودیت ها:
⚠ ذخیره سازی در حافظه: تنظیم مجدد داده ها در راه اندازی مجدد سرور (از یک پایگاه داده مانند PostgreSQL برای تولید استفاده کنید).
🛡 نت امنیتی: برای استفاده از تولید ، تأیید اعتبار و خطا را اضافه کنید.
مرحله 5: API خود را آزمایش کنید
📌 باز http://127.0.0.1:8000/docs و نقاط پایانی را با استفاده از UI Swagger آزمایش کنید.
خلاصه نقاط پایانی API:
روش | نقطه پایانی | شرح |
---|---|---|
پست | /users/ |
یک کاربر جدید ایجاد کنید |
بدست آوردن | /users/ |
همه کاربران را دریافت کنید |
بدست آوردن | /users/{id} |
یک کاربر خاص دریافت کنید |
قرار دادن | /users/{id} |
کاربر را به روز کنید |
حذف کردن | /users/{id} |
یک کاربر را حذف کنید |
منابع پروژه
پایان
شما با موفقیت یک ساده ساخته اید crud api با fastapi! 🎉
🔹 مراحل بعدی:
- اتصال به a مجموعه پایگاه داده (postgresql)
- ذخیره داده های حساس در پرونده های .env
- احراز هویت را اجرا کنید
برای پست بعدی با ما همراه باشید! 🚀
📚 خواندن بیشتر: