Fri, Apr 18, 2025

چرا FastAPI عشق است

مهم نیست شما یک برنامه نویس تازه کار باشید یا از دنیای دیتا منظور کار با مدلها و هوش مصنوعی و یا تحلیل دیتا قرار ست با فست ای پی آی کار کنید. یک فریم ورک تر و تمیز با یه داکیومنت خوب که به شما کمک میکنه RestAPI بسازید.

FastAPI

Credit: FastAPI

خب اصلا RestAPI چی هست؟

پس REST API یعنی یه رابط ارتباطی ساده و قابل فهم برای ارتباط بین برنامه‌ها، بر پایه قوانین REST.


یک مثال واقعی:

فرض کن یه اپلیکیشن موبایل داریم که اطلاعات آب‌و‌هوا رو نشون می‌ده. این اپ خودش نمی‌تونه مستقیم به ماهواره یا پایگاه داده متصل بشه.
در عوض، با یه REST API تماس می‌گیره و می‌گه:

“سلام، لطفاً آب‌و‌هوا برای تهران رو بده.”

سرور هم با یه جواب مثل زیر، اطلاعات رو برمی‌گردونه:

{
  "city": "Tehran",
  "temperature": "18",
  "status": "Sunny"
}

🚀 حالا ببینیم که فست ای پی آی چیه؟

FastAPI یه فریم‌ورک (کتابخانه‌ی پیشرفته) برای زبان Python هست که بهت کمک می‌کنه خیلی سریع و راحت REST API بسازی.

یعنی اگر بخوای با پایتون یه API بنویسی که مثلاً داده بفرسته، دریافت کنه، کاربر بسازه، اطلاعات ذخیره کنه یا پردازش انجام بده، FastAPI یکی از بهترین انتخاب‌هاست.


✅ چرا FastAPI محبوبه؟

  1. سرعت بالا – خیلی سریع اجرا می‌شه ( بنا به گفته سازنده تقریباً هم‌رده Node.js و Go)
  2. کدنویسی ساده و خوانا – با کمترین کد، بیشترین خروجی رو می‌گیری.
  3. پشتیبانی از تایپ‌ها (type hints) – بهت کمک می‌کنه خطاها رو زودتر بگیری و با ادیتورهایی مثل VS Code راحت‌تر کار کنی.
  4. مستندات خودکار – وقتی API ساختی، خود فریم‌ورک یه صفحه مستندات برات می‌سازه (با Swagger UI) که خیلی حرفه‌ایه.

👨‍💻 یه مثال ساده FastAPI

حالا یک کد ساده که همون خروجی آب و هوای تهران را در مثال قبل تولید میکنه که با استفاده از متد GET نوشته شده که مقدار این آب و هوا میتونه از یک سنسر مثلا روی رزبری پای گرفته بشه و حتی این کد هم میتونه روی رزبری پای کار کند.

from fastapi import FastAPI

app = FastAPI()

@app.get("/weather")
def get_weather():
    return {
        "city": "Tehran",
        "temperature": "18",
        "status": "Sunny"
    }

پس اگر FastAPI می‌تونه هر نوع داده‌ای رو از طریق پروتکل REST منتشر کنه،
و می‌تونه روی هر دستگاهی که از پایتون پشتیبانی می‌کنه اجرا بشه،
در نتیجه می‌تونه داده‌ها رو به مدل‌های هوش مصنوعی هم منتقل کنه.

این یعنی ما می‌تونیم از طریق APIهایی که با FastAPI ساختیم،
با مدل خودمون صحبت کنیم — داده بفرستیم، پاسخ بگیریم، یا نتیجه تحلیل‌ها رو دریافت کنیم.
فرانت‌اند سایت یا اپلیکیشن هم می‌تونه مستقیماً با این API ارتباط برقرار کنه
و اطلاعات مورد نیاز رو از مدل دریافت یا به اون ارسال کنه.

✅ به زبان ساده:

FastAPI می‌تونه نقش واسط بین بخش‌های مختلف یه سیستم رو بازی کنه، مثل:

و همه این ارتباط‌ها رو با سرعت، سادگی و ساختاری استاندارد برقرار کنه.

🧠 چطوری با مدلمون صحبت کنیم ؟

فرض کن حالا یه مدل هوش مصنوعی داریم که قبلاً آموزش‌های لازم رو دیده و تربیتش کردیم.
می‌خوایم وقتی دمای هوا رو بهش بدیم، مثل این مامانا بهمون بگه “عزیزم امروز چی بپوشی” 😁

اینجا فرض می‌کنیم اسم مدل ما outfit_model هست و داخل فایل outfit_model.pkl ذخیره شده.

پس در این صورت می‌تونیم با FastAPI اینجوری بنویسیم:

from fastapi import FastAPI
from pydantic import BaseModel
import joblib

app = FastAPI()

# مدل از فایل بارگذاری میشه
model = joblib.load("outfit_model.pkl")

# تعریف ساختار ورودی
class WeatherInput(BaseModel):
    temperature: float

# تعریف API برای پیش‌بینی لباس مناسب
@app.post("/recommend-outfit")
def recommend_outfit(weather: WeatherInput):
    temp = [[weather.temperature]]
    prediction = model.predict(temp)[0]

    return {
        "temperature": weather.temperature,
        "recommended_outfit": prediction
    }

حالا هر وقت یک درخواست به /recommend-outfit با یه دمای خاص بفرستیم،
مدل پیش‌بینی می‌کنه چه لباسی مناسب اون هواست.

🧪 مثال درخواست (Request):

{
  "temperature": 12
}

پاسخ مدل (Response):

{
  "temperature": 12,
  "recommended_outfit": "پلیور"
}

خب، پس تا اینجا خیلی چیزها در مورد FastAPI به صورت شسته‌ و رفته گفتم.
اما اگه می‌خوای بیشتر بدونی و حرفه‌ای‌تر بشی، باید یه سری به مستندات رسمی FastAPI بزنی:

👉 https://fastapi.tiangolo.com


🧑‍💻 حالا وقتشه آستین‌هاتو بالا بزنی!

۱. نصب پایتون
۲. تنظیم محیط برنامه‌نویسی (virtual environment)
۳. نصب FastAPI و سایر مخلفات (مثل uvicorn)
۴. و بعدش…

✨ تمرین، تمرین، تمرین!

شروع کن به کدنویسی، با مثال‌های ساده مثل API آب‌وهوا، توصیه لباس، چت‌بات، یا هر چیزی که دوست داری.


کد بزن …