rest ساخت REST API با FastAPI — بهترین و فوق‌العاده ساده

rest ساخت API به سبک REST با FastAPI یکی از ساده‌ترین روش‌ها برای پیاده‌سازی سرویس‌های وب است. در این مقاله به شما نشان می‌دهیم چگونه با استفاده از فریمورک FastAPI یک REST API کارآمد، سریع و قابل گسترش بسازید. هدف ما ارائه یک راهنمای گام‌به‌گام است که هم برای مبتدی‌ها و هم برای توسعه‌دهندگان با تجربه مفید باشد.

H2: آشنایی با مفهوم REST و چرا FastAPI؟

rest به عنوان یک سبک معماری برای طراحی APIها شناخته می‌شود. برخلاف طراحی‌های قدیمی‌تر، REST روی اصول ساده‌سازی، استفاده از منابع (Resource)، روش‌های HTTP (GET، POST، PUT، DELETE و غیره) و پاسخ‌های واضح و قابل پیش‌بینی تمرکز دارد. FastAPI با فراهم کردن امکاناتی مانند تعریف سریع مدل‌ها با Pydantic، مستندسازی خودکار با OpenAPI و اجرای سریع کد، بستر مناسبی را برای توسعه REST API فراهم می‌کند.

– سرعت توسعه: توسط تایپ‌های قدرتمند Python و اعتبارسنجی داده‌ها، شما فوراً از خطاهای رایج در زمان توسعه جلوگیری می‌کنید.
– مستندسازی خودکار: Swagger UI و Redoc به طور خودکار برای شما مستندات زیبا و قابل تعامل ایجاد می‌کنند.
– کارایی بالا: FastAPI به صورت ASGI کار می‌کند و از قابلیت‌های مدرن پایتون بهره می‌برد تا پاسخ‌دهی سریع در اختیار شما باشد.

H2: نصب و راه‌اندازی اولیه

برای شروع، باید FastAPI و یک سرویس اجرای HTTP مانند Uvicorn را نصب کنید. مراحل زیر را دنبال کنید:

– ایجاد محیط مجازی (اختیاری اما توصیه‌شده): python -m venv venv و فعال‌سازی آن.
– نصب بسته‌ها: pip install fastapi uvicorn
– اجرای نخستین سرویس ساده:
– ایجاد فایلی به نام main.py با محتوای زیر:
– از fastapi import FastAPI
– app = FastAPI()
– @app.get(“/”) def read_root(): return {“message”: “سلام از REST با FastAPI!”}
– به ازای هر تغییر، با uvicorn main:app –reload اجرا کنید.
– با وارد کردن http://localhost:8000/ در مرورگر یا Swagger که در http://localhost:8000/docs قابل دسترسی است، می‌توانید نتیجه را مشاهده کنید.

H3: مدل‌سازی داده‌ها با Pydantic

در REST API، اعتبارسنجی ورودی و خروجی اهمیت زیادی دارد. FastAPI از مدل‌های Pydantic استفاده می‌کند تا داده‌ها را به شیوه‌ای استاندارد و امن مدیریت کند.

– تعریف مدل: از پایتون کلاس‌هایی استفاده می‌کنید که از BaseModel ارث‌بری می‌کنند.
– اعتبارسنجی اتوماتیک: FastAPI ورودی‌ها را با مدل‌ها تطبیق می‌کند و خطاهای مناسب را بازمی‌گرداند.
– نمونه ساده:
– از pydantic import BaseModel
– class Item(BaseModel): name: str; price: float; is_offer: bool = None
– @app.post(“/items/”) async def create_item(item: Item): return item

H2: پیاده‌سازی CRUD با FastAPI

برای یک REST API خوب باید عملیات پایه‌ای CRUD را پوشش دهید: Create، Read، Update، Delete. در مثال زیر یک منبع فرضی به نام “کتاب” را مدیریت می‌کنیم.

– نمونه مسیرها:
– @app.post(“/books/”) async def create_book(book: Book): …
– @app.get(“/books/{book_id}”) async def read_book(book_id: int): …
– @app.put(“/books/{book_id}”) async def update_book(book_id: int, book: Book): …
– @app.delete(“/books/{book_id}”) async def delete_book(book_id: int): …

– استفاده از دیتاست ساده در حافظه:
– کتاب‌ها را در یک دیکشنری نگه دارید تا نمونه ساده‌ای از پایگاه داده را شبیه‌سازی کنید.
– با استفاده از کلید کتاب_id، عملیات‌ها را انجام دهید.
– روش‌های بهبود:
– اتصال به دیتابیس واقعی مانند PostgreSQL با SQLAlchemy یا Tortoise ORM.
– استفاده از Alembic برای مدیریت مایگریسیون‌های دیتابیسی.

H3: امنیت و احراز هویت ساده

برای REST APIهای واقعی، احراز هویت و مجوز دسترسی مهم است. FastAPI امکاناتی مانند امنیت با OAuth2، JWT و وابستگی‌ها (Dependencies) را به طور ملموس ارائه می‌دهد.

– پیاده‌سازی ساده:
– استفاده از HTTP Basic یا OAuth2 Password Bearer برای نمونه‌های آموزشی.
– پیاده‌سازی یک وابستگی ساده که کاربر را بررسی کند و برای بعضی مسیرها، دسترسی لازم را بدهد.
– نکته امنیتی:
– کلیدها و سِرها را در محیط‌های امن نگهداری کنید.
– از HTTPS به جای HTTP استفاده کنید و سیاست‌های CSRF را در برابر کلاینت‌های وب رعایت کنید.

H2: طراحی فایل‌ها و ساختار پروژه

برای پروژه‌های REST با FastAPI، سازماندهی منظم کد اهمیت دارد تا هم توسعه‌دهندگان بتوانند به سرعت کار را ادامه دهند و هم تیم‌ها بتوانند پروژه را گسترش دهند.

– ساختار پیشنهادی:
– app/
– main.py: نقطه ورودی سرویس
– api/
– endpoints/
– books.py: تعریف مسیرهای مربوط به کتاب‌ها
– models.py: مدل‌های Pydantic
– schemas.py: مدل‌های ورودی/خروجی برای API
– db.py: مدیریت ارتباطات دیتابیس (در صورت استفاده از دیتابیس)
– core/
– config.py: تنظیمات پروژه
– security.py: توابع امنیتی
– مزیت این ساختار:
– جداسازی واضح لایه‌ها و تسهیل توسعه افزونه‌های جدید (مثلاً اضافه کردن منابع جدید).

H2: تست و استقرار

تست‌های API به ویژه در REST API اهمیت دارد تا از صحت عملکرد اطمینان حاصل شود.

– تست‌های واحد:
– استفاده از pytest همراه با pytest-asyncio برای تست مسیرهای غیرهمزمان.
– مثال ساده: create_book با ورودی معتبر و بررسی پاسخ.
– تست‌های یکپارچه:
– استقرار محلی دیتابیس (یا استفاده از دیتابیس تستی) و اجرای مسیرهای مختلف.
– استقرار:
– محیط‌های_CONTAINER یا سرویس‌های ابری مانند AWS, Azure یا Google Cloud.
– استفاده از Docker برای بسته‌بندی کل سرویس و اجرای سریع در هر محیط.
– فایل Dockerfile ساده که از Python تصویر استفاده می‌کند و اجرای uvicorn را انجام می‌دهد.
– نکته عملی:
– برای محیط‌های تولیدی، پیکربندی متغیرهای محیطی، امکان لاگ‌گیری مناسب و مدیریت خطاها را فراموش نکنید.

H3: نکات بهینه‌سازی و بهترین روش‌ها

– استفاده از async: FastAPI از قابلیت async پشتیبانی می‌کند. مسیرهای async بهینه‌تر هستند وقتی IO-bound کار می‌کنید (دسترسی به دیتابیس، شبکه و غیره).
– اعتبارسنجی ورودی دقیق: با استفاده از مدل‌های Pydantic، ورودی‌ها را دقیقاً بررسی کنید تا از خطاهای رایج اجرا جلوگیری شود.
– پیاده‌سازی ارتباط با دیتابیس به صورت جداگانه: استفاده از لوایر دیتابیس می‌تواند نگهداری کد را ساده‌تر کند.
– اعتبارسنجی و فیلترها در پاسخ: پاسخ‌های شما باید به طور دقیق و مطابق با استانداردهای REST بازگردانده شوند (کد وضعیت HTTP مناسب، بدنه منظم).

H2: جمع‌بندی و نتیجه‌گیری

rest با FastAPI تجربه‌ای روان و کارا را ارائه می‌دهد. با یادگیری اصول REST، بهره‌گیری از مدل‌های Pydantic برای اعتبارسنجی، و ساختار پروژه منظم، شما می‌توانید APIهایی بسازید که هم برای کاربران انسانی و هم برای کلاینت‌های برنامه‌نویسی دیگر قابل فهم و قابل اعتماد باشند. راه‌اندازی اولیه ممکن است به نظر ساده بیاید، اما با تمرین و پیاده‌سازی پروژه‌های کوچک تا بزرگ، به سرعت به یک توسعه‌دهنده REST با FastAPI تبدیل خواهید شد. از مستندسازی خودکار، از سرعت قابل توجه اجرای کد و از امکان گسترش آسان سیستم لذت ببرید و به عنوان نقطه آغاز برای پروژه‌های بزرگ‌تر و مقیاس‌پذیرتر از FastAPI استفاده کنید.


دیدگاه‌ها

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

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