⏱️2 min read · 410 words

FastAPIهو إطار عمل ويب Python الأسرع نموًا في عام 2026. مبني على Starlette وPydantic، وهو يُنشئ مستندات OpenAPI تلقائيًا، ويتعامل مع عدم المزامنة محليًا، ويعمل بسرعات Node.js/Go. ينشئ هذا الدليل واجهة REST API كاملة مع المصادقة وقاعدة البيانات والنشر.
📋 Table of Contents
التثبيت ونقطة النهاية الأولى
pip install fastapi uvicorn sqlalchemy pydantic[email]
# main.py
from fastapi import FastAPI
app = FastAPI(title='My API', version='1.0.0')
@app.get('/')
async def root():
return {'message': 'Hello FastAPI!'}
@app.get('/health')
async def health():
return {'status': 'ok'}
uvicorn main:app --reload
# Docs at: http://localhost:8000/docs
نماذج Pydantic للتحقق من الصحة
from pydantic import BaseModel, EmailStr
from typing import Optional
class UserCreate(BaseModel):
name: str
email: EmailStr
age: int
class UserResponse(BaseModel):
id: int
name: str
email: str
model_config = {'from_attributes': True}
نقاط النهاية الخام
from fastapi import HTTPException
# In-memory store for demo
users_db: dict[int, dict] = {}
counter = 0
@app.post('/users', response_model=UserResponse, status_code=201)
async def create_user(user: UserCreate):
global counter
counter += 1
users_db[counter] = {'id': counter, **user.model_dump()}
return users_db[counter]
@app.get('/users/{user_id}', response_model=UserResponse)
async def get_user(user_id: int):
if user_id not in users_db:
raise HTTPException(status_code=404, detail='User not found')
return users_db[user_id]
@app.put('/users/{user_id}', response_model=UserResponse)
async def update_user(user_id: int, user: UserCreate):
if user_id not in users_db:
raise HTTPException(status_code=404, detail='User not found')
users_db[user_id] = {'id': user_id, **user.model_dump()}
return users_db[user_id]
@app.delete('/users/{user_id}', status_code=204)
async def delete_user(user_id: int):
if user_id not in users_db:
raise HTTPException(status_code=404, detail='User not found')
del users_db[user_id]
مصادقة JWT
pip install python-jose[cryptography] passlib[bcrypt]
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
from jose import jwt
from passlib.context import CryptContext
from datetime import datetime, timedelta
SECRET_KEY = 'your-secret-key'
ALGORITHM = 'HS256'
pwd_ctx = CryptContext(schemes=['bcrypt'])
oauth2 = OAuth2PasswordBearer(tokenUrl='token')
def create_token(data: dict) -> str:
payload = data | {'exp': datetime.utcnow() + timedelta(hours=24)}
return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)
@app.post('/token')
async def login(form: OAuth2PasswordRequestForm = Depends()):
# Verify password here
token = create_token({'sub': form.username})
return {'access_token': token, 'token_type': 'bearer'}
مهام الخلفية
from fastapi import BackgroundTasks
def send_welcome_email(email: str):
# runs after response is sent
print(f'Sending welcome to {email}')
@app.post('/register')
async def register(user: UserCreate, bg: BackgroundTasks):
# Create user in DB...
bg.add_task(send_welcome_email, user.email)
return {'status': 'registered'}
الخلاصة
يمنحك FastAPI مستندات OpenAPI التي يتم إنشاؤها تلقائيًا وطلب/استجابة آمنة من النوع وأداء غير متزامن وأنماط مصادقة مضمنة. إنه أفضل إطار عمل ويب Python لواجهات برمجة التطبيقات في عام 2026. أضف SQLAlchemy أو Tortoise ORM لقاعدة البيانات، وانشرها باستخدام Docker، وستحصل على واجهة برمجة تطبيقات جاهزة للإنتاج في ساعات.
🔗 Share this article
✍️ Leave a Comment