ساخت API با FastAPI: راهنمای جامع

ساخت API با FastAPI: راهنمای جامع

در دنیای توسعه وب مدرن، APIها (Application Programming Interfaces) نقش حیاتی در ارتباط بین سیستم‌های مختلف ایفا می‌کنند. پایتون، به عنوان یک زبان برنامه‌نویسی محبوب و قدرتمند، ابزارهای متعددی برای ساخت API ارائه می‌دهد. FastAPI یکی از این ابزارهاست که به دلیل سرعت، سهولت استفاده و قابلیت‌های پیشرفته، به سرعت در بین توسعه‌دهندگان محبوبیت پیدا کرده است. این مقاله به بررسی جامع FastAPI، مزایای آن و نحوه استفاده از آن برای ساخت API می‌پردازد. این آموزش در دسته ‘کتابخانه‌های خاص و کاربردی’ در آموزش پایتون قرار می‌گیرد.

FastAPI چیست؟

FastAPI یک فریم‌ورک وب مدرن و پرسرعت برای ساخت APIها با پایتون است. این فریم‌ورک بر اساس استانداردهای نوع‌بندی پایتون (Type Hints) و کتابخانه Pydantic ساخته شده است. FastAPI به طور خاص برای ساخت APIهای با کارایی بالا طراحی شده و از ویژگی‌هایی مانند اعتبار سنجی داده‌ها، تولید خودکار مستندات API (با استفاده از OpenAPI و Swagger UI) و پشتیبانی از asynchronous programming بهره می‌برد.

مزایای استفاده از FastAPI

  • سرعت بالا: FastAPI به دلیل استفاده از Starlette و Pydantic، یکی از سریع‌ترین فریم‌ورک‌های وب پایتون محسوب می‌شود.
  • سهولت استفاده: سینتکس ساده و شهودی FastAPI، یادگیری و استفاده از آن را برای توسعه‌دهندگان آسان می‌کند.
  • اعتبار سنجی داده‌ها: Pydantic به طور خودکار داده‌های ورودی را بر اساس نوع‌بندی‌های تعریف شده اعتبار سنجی می‌کند و از بروز خطاها جلوگیری می‌کند.
  • تولید خودکار مستندات API: FastAPI به طور خودکار مستندات API را با استفاده از OpenAPI و Swagger UI تولید می‌کند که به توسعه‌دهندگان دیگر کمک می‌کند تا به راحتی API شما را درک و استفاده کنند.
  • پشتیبانی از Asynchronous Programming: FastAPI به طور کامل از asynchronous programming پشتیبانی می‌کند که امکان ساخت APIهای مقیاس‌پذیر و با کارایی بالا را فراهم می‌کند.
  • Type Hints: استفاده از Type Hints در FastAPI به بهبود خوانایی کد، تشخیص خطاها و ارائه پیشنهادات هوشمندانه در IDEها کمک می‌کند.

نصب FastAPI

برای شروع کار با FastAPI، ابتدا باید آن را نصب کنید. می‌توانید این کار را با استفاده از pip انجام دهید:

pip install fastapi uvicorn

Uvicorn یک سرور ASGI (Asynchronous Server Gateway Interface) است که برای اجرای برنامه‌های FastAPI استفاده می‌شود.

ساخت یک API ساده با FastAPI

بیایید یک API ساده برای بازگرداندن یک پیام سلام ایجاد کنیم. کد زیر را در یک فایل پایتون (مثلاً main.py) ذخیره کنید:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "سلام دنیا!"}

در این کد:

  • `from fastapi import FastAPI` کتابخانه FastAPI را وارد می‌کند.
  • `app = FastAPI()` یک نمونه از برنامه FastAPI ایجاد می‌کند.
  • `@app.get(“/”)` یک دکوراتور است که مسیر `/` را به تابع `read_root` متصل می‌کند. این تابع زمانی اجرا می‌شود که یک درخواست GET به مسیر `/` ارسال شود.
  • `async def read_root():` یک تابع asynchronous است که یک دیکشنری با کلید “message” و مقدار “سلام دنیا!” را برمی‌گرداند.

اجرای API

برای اجرای API، از دستور زیر در ترمینال استفاده کنید:

uvicorn main:app --reload

در این دستور:

  • `main` نام فایل پایتون است.
  • `app` نام نمونه FastAPI است که در فایل main.py ایجاد شده است.
  • `–reload` باعث می‌شود که سرور به طور خودکار پس از تغییرات در کد، ری‌استارت شود.

پس از اجرای دستور، می‌توانید به آدرس `http://127.0.0.1:8000` در مرورگر خود بروید و پیام “سلام دنیا!” را مشاهده کنید. همچنین می‌توانید به آدرس `http://127.0.0.1:8000/docs` بروید تا مستندات API تولید شده توسط FastAPI را مشاهده کنید.

تعریف مسیرها و پارامترها

FastAPI به شما امکان می‌دهد مسیرهای مختلفی را با پارامترهای مختلف تعریف کنید. برای مثال، برای تعریف یک مسیر با یک پارامتر integer، می‌توانید از کد زیر استفاده کنید:

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

در این کد:

  • `{item_id}` یک پارامتر مسیر است که مقدار آن از URL دریافت می‌شود.
  • `item_id: int` نوع پارامتر `item_id` را به عنوان integer تعریف می‌کند. FastAPI به طور خودکار مقدار ورودی را به integer تبدیل می‌کند و در صورت عدم امکان، یک خطا برمی‌گرداند.

همچنین می‌توانید پارامترهای query را نیز تعریف کنید:

@app.get("/items/")
async def read_items(q: str = None):
    if q:
        return {"q": q}
    return {"message": "هیچ پارامتری ارائه نشده است."}

در این کد:

  • `q: str = None` یک پارامتر query است که مقدار آن از URL دریافت می‌شود.
  • `q: str` نوع پارامتر `q` را به عنوان string تعریف می‌کند.
  • `= None` مقدار پیش‌فرض پارامتر `q` را None تعیین می‌کند.

استفاده از Pydantic برای اعتبار سنجی داده‌ها

Pydantic یک کتابخانه قدرتمند برای اعتبار سنجی داده‌ها در پایتون است. FastAPI به طور یکپارچه با Pydantic ادغام شده است و به شما امکان می‌دهد مدل‌های داده‌ای را تعریف کنید که به طور خودکار داده‌های ورودی را اعتبار سنجی می‌کنند. برای مثال، می‌توانید یک مدل Pydantic برای تعریف یک item ایجاد کنید:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str | None = None
    price: float
    tax: float | None = None

در این کد:

  • `class Item(BaseModel):` یک کلاس Pydantic به نام `Item` ایجاد می‌کند که از `BaseModel` ارث می‌برد.
  • `name: str` یک فیلد با نام `name` و نوع string تعریف می‌کند.
  • `description: str | None = None` یک فیلد با نام `description` و نوع string یا None تعریف می‌کند. مقدار پیش‌فرض آن None است.
  • `price: float` یک فیلد با نام `price` و نوع float تعریف می‌کند.
  • `tax: float | None = None` یک فیلد با نام `tax` و نوع float یا None تعریف می‌کند. مقدار پیش‌فرض آن None است.

سپس می‌توانید از این مدل در API خود استفاده کنید:

@app.post("/items/")
async def create_item(item: Item):
    return item

در این کد:

  • `item: Item` یک پارامتر است که از نوع `Item` است. FastAPI به طور خودکار داده‌های ورودی را بر اساس مدل `Item` اعتبار سنجی می‌کند و در صورت بروز خطا، یک خطا برمی‌گرداند.

خلاصه

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

بدون دیدگاه

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

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