FastAPI — فریمورک وب سریع برای Python
FastAPI برای ساخت APIهای سریع، تایپایمن و قابل مقیاس طراحی شده. مشکل ولیدیشن دستی، مستندسازی و کار با async را با Pydantic و طراحی مبتنی بر نوع حل میکند.
ویژگیها:
- پشتیبانی async/await
- اعتبارسنجی و تبدیل داده با Pydantic
- مستندات خودکار OpenAPI/Swagger
- عملکرد بالا و کمکد
نمونه نصب و استفاده:
موارد کاربرد: میکروسرویسها، APIهای REST، پروتوتایپ سریع و بکاند سرویسهای تحت ترافیک بالا. مستندات و سورس:
Docs — GitHub
نظرتون و تجربههاتون با FastAPI رو بنویسید؛ استقبال میکنیم.
🔖 #Programming #برنامه_نویسی #python #fastapi #api #web #pydantic
👤 Developix
💎 Channel: @DevelopixChannel
FastAPI برای ساخت APIهای سریع، تایپایمن و قابل مقیاس طراحی شده. مشکل ولیدیشن دستی، مستندسازی و کار با async را با Pydantic و طراحی مبتنی بر نوع حل میکند.
ویژگیها:
- پشتیبانی async/await
- اعتبارسنجی و تبدیل داده با Pydantic
- مستندات خودکار OpenAPI/Swagger
- عملکرد بالا و کمکد
نمونه نصب و استفاده:
pip install fastapi uvicorn
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"hello": "world"}
# اجرا: uvicorn main:app --reload
موارد کاربرد: میکروسرویسها، APIهای REST، پروتوتایپ سریع و بکاند سرویسهای تحت ترافیک بالا. مستندات و سورس:
Docs — GitHub
نظرتون و تجربههاتون با FastAPI رو بنویسید؛ استقبال میکنیم.
🔖 #Programming #برنامه_نویسی #python #fastapi #api #web #pydantic
👤 Developix
💎 Channel: @DevelopixChannel
👍6
Pydantic یکی از کتابخانههای جدی و پراستفاده در Python برای کار با data models و validation است؛ مخصوصاً وقتی از FastAPI، اسکریپتهای ETL یا سرویسهای داخلی استفاده میشود.
ایدهاش ساده است: بهجای if—elseهای تکراری برای چک کردن ورودیها، یک مدل تعریف میکنی و Pydantic خودش نوعها را تبدیل و داده را اعتبارسنجی میکند ✅
ویژگیهای مهم:
• تایپمحور بر اساس type hints پایتون
• تبدیل خودکار انواع (مثلاً str به int در صورت امکان)
• پیام خطای قابلخواندن برای API و لاگها
• ادغام عالی با FastAPI و ابزارهای async
نمونه استفاده ساده:
برای پروژههایی که ورودیشان از API، فرم، Message Queue یا فایل JSON میآید، Pydantic کمک میکند باگهای مربوط به داده را خیلی زودتر شکار کنی 🧪
Docs رسمی:
docs.pydantic.dev
GitHub:
github.com/pydantic/pydantic
امتحانش کن روی یکی از سرویسهای داخلیات و ببین چقدر validation تمیزتر و قابلاعتمادتر میشود 🚀
🔖 #Programming #برنامه_نویسی #Python #Pydantic #Validation #FastAPI #Data_Modeling
👤 Developix
💎 Channel: @DevelopixChannel
ایدهاش ساده است: بهجای if—elseهای تکراری برای چک کردن ورودیها، یک مدل تعریف میکنی و Pydantic خودش نوعها را تبدیل و داده را اعتبارسنجی میکند ✅
ویژگیهای مهم:
• تایپمحور بر اساس type hints پایتون
• تبدیل خودکار انواع (مثلاً str به int در صورت امکان)
• پیام خطای قابلخواندن برای API و لاگها
• ادغام عالی با FastAPI و ابزارهای async
نمونه استفاده ساده:
from pydantic import BaseModel, ValidationError
class User(BaseModel):
id: int
name: str
is_active: bool = True
try:
user = User(id="1", name="Sara")
print(user.id, type(user.id)) # 1 <class 'int'>
except ValidationError as e:
print(e.json())
برای پروژههایی که ورودیشان از API، فرم، Message Queue یا فایل JSON میآید، Pydantic کمک میکند باگهای مربوط به داده را خیلی زودتر شکار کنی 🧪
Docs رسمی:
docs.pydantic.dev
GitHub:
github.com/pydantic/pydantic
امتحانش کن روی یکی از سرویسهای داخلیات و ببین چقدر validation تمیزتر و قابلاعتمادتر میشود 🚀
🔖 #Programming #برنامه_نویسی #Python #Pydantic #Validation #FastAPI #Data_Modeling
👤 Developix
💎 Channel: @DevelopixChannel
👍4
🚀 ساخت یک REST API ساده با FastAPI (ولی حرفهای!)
FastAPI اینقدر سریع و تمیزه که برای ساخت REST APIهای کوچک تا سرویسهای جدی تولید (Production) عالی جواب میده. توی این پست، بر اساس داک رسمی FastAPI (https://fastapi.tiangolo.com)، یک API واقعی و قابل استفاده برای مدیریت "تسکها" میسازیم؛ چیزی شبیه todo-service کوچیک، ولی تمیز و قابل توسعه. 😎
ایده اینه:
• یک API میسازیم که لیست تسکها رو بده، تسک جدید بگیره و وضعیتش رو عوض کنه.
• از Pydantic models برای اعتبارسنجی ورودی استفاده میکنیم.
• خروجی JSON تمیز و قابل مصرف برای Front-end یا mobile app داریم.
اول با نصب شروع کن:
حالا یک فایل به اسم
اجرا روی لوکال:
بعد از اجرا، دو چیز خیلی کاربردی داری:
1️⃣ خود API روی:
2️⃣ داکیومنت خودکار با Swagger UI روی:
همونجا میتونی
نکتههای ریز ولی مهم:
• استفاده از
• با
• چون
این اسکلت ساده، پایه خیلی از APIهای واقعیه: فقط کافیه endpointها و مدلهات رو گسترش بدی. 👨💻👩💻
امتحانش کن، یک mini todo-service برای خودت بساز و روی پروژههای شخصی یا تمرینیات سوارش کن. اگر مفید بود برای بقیه دولوپرها هم بفرست تا از FastAPI لذت ببرن. 😄
🔖 #Programming #برنامه_نویسی #FastAPI #Python #REST_API #Backend #Web
👤 Developix
💎 Channel: @DevelopixChannel
FastAPI اینقدر سریع و تمیزه که برای ساخت REST APIهای کوچک تا سرویسهای جدی تولید (Production) عالی جواب میده. توی این پست، بر اساس داک رسمی FastAPI (https://fastapi.tiangolo.com)، یک API واقعی و قابل استفاده برای مدیریت "تسکها" میسازیم؛ چیزی شبیه todo-service کوچیک، ولی تمیز و قابل توسعه. 😎
ایده اینه:
• یک API میسازیم که لیست تسکها رو بده، تسک جدید بگیره و وضعیتش رو عوض کنه.
• از Pydantic models برای اعتبارسنجی ورودی استفاده میکنیم.
• خروجی JSON تمیز و قابل مصرف برای Front-end یا mobile app داریم.
اول با نصب شروع کن:
pip install "fastapi[all]" uvicorn
حالا یک فایل به اسم
main.py بساز و این کد رو بذار داخلش:from typing import List, Optional
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI(title="Tasks API")
class Task(BaseModel):
id: int
title: str
done: bool = False
description: Optional[str] = None
# دیتابیس موقتی در حافظه
TASKS_DB: List[Task] = []
@app.get("/tasks", response_model=List[Task])
async def list_tasks():
return TASKS_DB
@app.post("/tasks", response_model=Task, status_code=201)
async def create_task(task: Task):
for t in TASKS_DB:
if t.id == task.id:
raise HTTPException(status_code=400, detail="Task id already exists")
TASKS_DB.append(task)
return task
@app.patch("/tasks/{task_id}", response_model=Task)
async def mark_done(task_id: int):
for t in TASKS_DB:
if t.id == task_id:
t.done = True
return t
raise HTTPException(status_code=404, detail="Task not found")
اجرا روی لوکال:
uvicorn main:app --reload
بعد از اجرا، دو چیز خیلی کاربردی داری:
1️⃣ خود API روی:
http://127.0.0.1:8000/tasks
2️⃣ داکیومنت خودکار با Swagger UI روی:
http://127.0.0.1:8000/docs
همونجا میتونی
POST /tasks رو تست کنی، JSON بفرستی و خروجی رو ببینی. این همون چیزییه که تو سرویسهای واقعی برای Front-end، موبایل یا حتی microserviceهای دیگه فرستاده میشه.نکتههای ریز ولی مهم:
• استفاده از
response_model باعث میشه خروجی همیشه شکل مشخصی داشته باشه و Pydantic اون رو validate کنه.• با
HTTPException خطاها رو استاندارد و قابل پیشبینی برمیگردونی.• چون
TASKS_DB فقط تو حافظهست، برای محیط واقعی باید به یک دیتابیس واقعی مثل PostgreSQL وصلش کنی (مثلاً با SQLModel یا SQLAlchemy).این اسکلت ساده، پایه خیلی از APIهای واقعیه: فقط کافیه endpointها و مدلهات رو گسترش بدی. 👨💻👩💻
امتحانش کن، یک mini todo-service برای خودت بساز و روی پروژههای شخصی یا تمرینیات سوارش کن. اگر مفید بود برای بقیه دولوپرها هم بفرست تا از FastAPI لذت ببرن. 😄
🔖 #Programming #برنامه_نویسی #FastAPI #Python #REST_API #Backend #Web
👤 Developix
💎 Channel: @DevelopixChannel
👍3❤1
ساخت یک REST API ساده با FastAPI 🚀
اگر دنبال راهی سریع و تمیز برای ساختن API هستی، FastAPI یکی از بهترین گزینههاست. روی Python ۳ کار میکنه، تایپهینتها رو جدی میگیره و همزمان هم داکیومنت اتوماتیک میسازه، هم performance خیلی خوبی داره.
سناریو: یه سرویس خیلی ساده «مدیریت تسکها» میخوایم، چیزی شبیه TODO، که بعداً راحت بشه روش frontend یا موبایل سوار کرد.
منبع اصلی این آموزش از داکیومنت رسمی FastAPI هست:
https://fastapi.tiangolo.com/tutorial/
✅ ایده کلی
FastAPI روی Starlette و Pydantic ساخته شده. یعنی:
• تعریف مدل داده با Pydantic (مثلاً مدل Task)
• تعریف endpointها با decoratorهای ساده مثل
• اجرا روی Uvicorn برای performance بالا
این مدل برای ساخت microservice، backend برای SPA، یا API موبایل خیلی practical و واقعیست.
🔧 نصب و راهاندازی سریع
۱) ساخت venv (اختیاری ولی پیشنهاد میشه)
۲) نصب FastAPI و Uvicorn:
👨💻 پیادهسازی یک TODO API کوچک
فایل
▶️ اجرای سرور
روی ترمینال:
حالا API روی آدرس زیر در حال اجراست:
و مستندات خودکار (Swagger UI) اینجاست:
اونجا میشه مستقیم request فرستاد، body داد، response دید و راحت API رو تست کرد. برای تست سریع هم میشه از
💡 نکات کاربردی
• بهتره از همون اول type-hintها رو جدی بگیری؛ FastAPI ازشون برای validation و schema استفاده میکنه.
• در پروژه واقعی، بهجای
•
یک بار این API ساده رو بساز، چند تا درخواست POST و GET بزن و ببین چقدر سریع میشه یک backend تمیز بالا آورد. اگر مفید بود، برای بقیه تیم هم بفرست تا برای پروتوتایپهای بعدی از FastAPI استفاده کنند. 🚀
🔖 #Programming #برنامه_نویسی #FastAPI #Python #REST_API #Backend #Web #Programming #Tutorial
👤 Developix
💎 Channel: @DevelopixChannel
اگر دنبال راهی سریع و تمیز برای ساختن API هستی، FastAPI یکی از بهترین گزینههاست. روی Python ۳ کار میکنه، تایپهینتها رو جدی میگیره و همزمان هم داکیومنت اتوماتیک میسازه، هم performance خیلی خوبی داره.
سناریو: یه سرویس خیلی ساده «مدیریت تسکها» میخوایم، چیزی شبیه TODO، که بعداً راحت بشه روش frontend یا موبایل سوار کرد.
منبع اصلی این آموزش از داکیومنت رسمی FastAPI هست:
https://fastapi.tiangolo.com/tutorial/
✅ ایده کلی
FastAPI روی Starlette و Pydantic ساخته شده. یعنی:
• تعریف مدل داده با Pydantic (مثلاً مدل Task)
• تعریف endpointها با decoratorهای ساده مثل
@app.get• اجرا روی Uvicorn برای performance بالا
این مدل برای ساخت microservice، backend برای SPA، یا API موبایل خیلی practical و واقعیست.
🔧 نصب و راهاندازی سریع
۱) ساخت venv (اختیاری ولی پیشنهاد میشه)
python -m venv venv
source venv/bin/activate # روی ویندوز: venv\Scripts\activate
۲) نصب FastAPI و Uvicorn:
pip install "fastapi[all]" uvicorn
👨💻 پیادهسازی یک TODO API کوچک
فایل
main.py رو بساز و کد زیر رو داخلش قرار بده:from typing import List, Optional
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI(title="Todo API")
class Task(BaseModel):
id: int
title: str
done: bool = False
description: Optional[str] = None
fake_db: List[Task] = []
@app.get("/tasks", response_model=List[Task])
async def list_tasks():
return fake_db
@app.post("/tasks", response_model=Task)
async def create_task(task: Task):
for t in fake_db:
if t.id == task.id:
raise HTTPException(status_code=400, detail="Task id already exists")
fake_db.append(task)
return task
@app.get("/tasks/{task_id}", response_model=Task)
async def get_task(task_id: int):
for t in fake_db:
if t.id == task_id:
return t
raise HTTPException(status_code=404, detail="Task not found")
@app.patch("/tasks/{task_id}", response_model=Task)
async def toggle_done(task_id: int):
for t in fake_db:
if t.id == task_id:
t.done = not t.done
return t
raise HTTPException(status_code=404, detail="Task not found")
▶️ اجرای سرور
روی ترمینال:
uvicorn main:app --reload
حالا API روی آدرس زیر در حال اجراست:
http://127.0.0.1:8000
و مستندات خودکار (Swagger UI) اینجاست:
http://127.0.0.1:8000/docs
اونجا میشه مستقیم request فرستاد، body داد، response دید و راحت API رو تست کرد. برای تست سریع هم میشه از
curl یا Postman استفاده کرد.💡 نکات کاربردی
• بهتره از همون اول type-hintها رو جدی بگیری؛ FastAPI ازشون برای validation و schema استفاده میکنه.
• در پروژه واقعی، بهجای
fake_db از دیتابیس (مثل PostgreSQL با SQLAlchemy) استفاده میشه، اما همین in-memory مدل فکری رو خوب جا میاندازه.•
@app.patch برای update جزئی خیلی بهدردبخوره؛ مخصوصاً وقتی روی front با formهای تیکدار کار میکنی.یک بار این API ساده رو بساز، چند تا درخواست POST و GET بزن و ببین چقدر سریع میشه یک backend تمیز بالا آورد. اگر مفید بود، برای بقیه تیم هم بفرست تا برای پروتوتایپهای بعدی از FastAPI استفاده کنند. 🚀
🔖 #Programming #برنامه_نویسی #FastAPI #Python #REST_API #Backend #Web #Programming #Tutorial
👤 Developix
💎 Channel: @DevelopixChannel
👍4