In diesem Beispiel versuchen wir eine kleine REST-API mit Python aufzubauen.
Installation
Zuerst brauchst du FastAPI und einen ASGI-Server wie Uvicorn:
pip install fastapi uvicorn
Beispiel: Kleine User-API
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
# Datenmodell (User)
class User(BaseModel):
id: int
name: str
email: str
# Fake-Datenbank (Liste im Speicher)
users_db = [
User(id=1, name="Alice", email="Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!"),
User(id=2, name="Bob", email="Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!"),
]
# 1) Alle User abrufen
@app.get("/users")
def get_users():
return users_db
# 2) User nach ID abrufen
@app.get("/users/{user_id}")
def get_user(user_id: int):
for user in users_db:
if user.id == user_id:
return user
raise HTTPException(status_code=404, detail="User not found")
# 3) Neuen User anlegen
@app.post("/users", status_code=201)
def create_user(user: User):
users_db.append(user)
return user
# 4) User aktualisieren
@app.put("/users/{user_id}")
def update_user(user_id: int, updated_user: User):
for index, user in enumerate(users_db):
if user.id == user_id:
users_db[index] = updated_user
return updated_user
raise HTTPException(status_code=404, detail="User not found")
# 5) User löschen
@app.delete("/users/{user_id}", status_code=204)
def delete_user(user_id: int):
for index, user in enumerate(users_db):
if user.id == user_id:
del users_db[index]
return
raise HTTPException(status_code=404, detail="User not found")
Server starten
Speichere den Code z. B. als main.py
und starte den Server:
uvicorn main:app --reload
-
Die API läuft dann unter:
http://127.0.0.1:8000
-
Automatische API-Dokumentation:
Swagger UI:http://127.0.0.1:8000/docs
ReDoc:http://127.0.0.1:8000/redoc
Beispiel-Requests
Mit cURL oder httpie:
-
Alle User abrufen:
- curl http://127.0.0.1:8000/users
User erstellen:
curl -X POST http://127.0.0.1:8000/users \
-H "Content-Type: application/json" \
-d '{"id":3,"name":"Charlie","email":"Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!"}'