
FastAPIist das am schnellsten wachsende Python-Webframework im Jahr 2026. Es basiert auf Starlette und Pydantic, generiert automatisch OpenAPI-Dokumente, verarbeitet nativ Asynchronität und arbeitet mit Node.js/Go-Geschwindigkeit. In diesem Leitfaden wird eine vollständige REST-API mit Authentifizierung, Datenbank und Bereitstellung erstellt.
📋 Table of Contents
Installation und erster Endpunkt
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
Pydantische Modelle zur Validierung
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}
CRUD-Endpunkte
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-Authentifizierung
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'}
Hintergrundaufgaben
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'}
Fazit
FastAPI bietet Ihnen automatisch generierte OpenAPI-Dokumente, typsichere Anforderungen/Antworten, asynchrone Leistung und integrierte Authentifizierungsmuster. Es ist das beste Python-Webframework für APIs im Jahr 2026. Fügen Sie SQLAlchemy oder Tortoise ORM für die Datenbank hinzu, stellen Sie es mit Docker bereit und Sie haben in wenigen Stunden eine produktionsbereite API.
🔗 Share this article
✍️ Leave a Comment