FastAPI
Oversigt
FastAPI er et moderne, højtydende Python-webframework til at bygge API'er. Det har automatisk interaktiv dokumentation, validering af type-hints og async-understøttelse fra start.
Kom godt i gang
Opret repository fra skabelon
Gå til fanen Tools & Deployment på dit dashboard. Klik på "New Repository", vælg FastAPI-skabelonen i dropdown-menuen, indtast et repository-navn og et subdomæne, og klik på "Create Repository".
Klon dit repository
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installer afhængigheder
pip install -r requirements.txt
Start udviklingsserver
uvicorn app.main:app --reload
Serveren kører på http://localhost:8000. Interaktiv API-dokumentation findes på http://localhost:8000/docs.
Push dine ændringer
git add .
git commit -m "Initial setup"
git push origin main
Lokal udvikling med Docker
Hvis du ikke har Python installeret lokalt, kan du bruge Docker til at køre din FastAPI-applikation.
Kør kommandoer med Docker
# Install dependencies
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Run development server
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && uvicorn app.main:app --host 0.0.0.0 --reload"
Databasekonfiguration
NStrim-platformen stiller en MySQL/MariaDB-database til rådighed. Konfigurer din forbindelse i .env-filen eller direkte i dit databasekonfigurationsmodul.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Tjek dashboardets loginoplysningssektion for præcise værdier.Projektstruktur
├── app/
│ ├── main.py # FastAPI-applikationens entry point
│ ├── routers/ # Rute-moduler
│ ├── models/ # SQLAlchemy-modeller
│ ├── schemas/ # Pydantic-skemaer
│ └── database.py # Databaseforbindelse
├── templates/ # Jinja2-skabeloner
├── static/ # CSS, JS, billeder
├── requirements.txt # Python-afhængigheder
└── Dockerfile # Docker-konfiguration
Almindelige opgaver
Opret et API-endpoint
from fastapi import APIRouter
router = APIRouter()
@router.get("/users")
async def get_users():
return [{"name": "Alice"}, {"name": "Bob"}]
@router.post("/users")
async def create_user(name: str, email: str):
return {"name": name, "email": email}
Brug af SQLAlchemy
from sqlalchemy import Column, Integer, String
from app.database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100))
email = Column(String(255), unique=True)
Pydantic-skema til validering
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
email: str
class UserResponse(BaseModel):
id: int
name: str
email: str
class Config:
from_attributes = True
Nyttige kommandoer
uvicorn app.main:app --reload
Start udviklingsserver med auto-reload
pip install -r requirements.txt
Installer afhængigheder
pip freeze > requirements.txt
Gem nuværende afhængigheder
Fejlfinding
OperationalError: Can't connect to MySQL server
Årsag: Database-host er forkert eller utilgængelig.
Løsning: Tjek at DATABASE_URL matcher database-hosten fra dit dashboard.
ModuleNotFoundError: No module named 'app'
Løsning: Sørg for, at du kører uvicorn fra projektets rodmappe, og at app/__init__.py findes.
422 Unprocessable Entity
Løsning: FastAPI validerer automatisk request-data. Tjek response-body'en for detaljer om, hvilke felter der fejlede validering. Besøg /docs for at se det forventede request-format.