برنامه نویسی

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بشر

ui swagger


مرحله 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} یک کاربر را حذف کنید

ui swagger


منابع پروژه


پایان

شما با موفقیت یک ساده ساخته اید crud api با fastapi! 🎉

🔹 مراحل بعدی:

  • اتصال به a مجموعه پایگاه داده (postgresql)
  • ذخیره داده های حساس در پرونده های .env
  • احراز هویت را اجرا کنید

برای پست بعدی با ما همراه باشید! 🚀

📚 خواندن بیشتر:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا