FastAPI
Oversikt
FastAPI er et moderne, høyytelses Python-webrammeverk for å bygge APIer. Det tilbyr automatisk interaktiv dokumentasjon, validering med type hints og asynkron støtte rett ut av boksen.
Hurtigstart
Opprett repository fra mal
Gå til fanen Tools & Deployment i dashbordet. Klikk på "New Repository", velg FastAPI-malen fra nedtrekksmenyen, skriv inn et repository-navn og et subdomene, og klikk deretter på "Create Repository".
Klon ditt repository
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installer avhengigheter
pip install -r requirements.txt
Start utviklingsserveren
uvicorn app.main:app --reload
Serveren kjører på http://localhost:8000. Interaktiv API-dokumentasjon er tilgjengelig på http://localhost:8000/docs.
Push endringene dine
git add .
git commit -m "Initial setup"
git push origin main
Lokal utvikling med Docker
Hvis du ikke har Python installert lokalt, kan du bruke Docker til å kjøre FastAPI-applikasjonen din.
Kjøre kommandoer med Docker
# Installer avhengigheter
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Start utviklingsserveren
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"
Databasekonfigurasjon
NStrim-plattformen gir deg en MySQL/MariaDB-database. Konfigurer tilkoblingen i .env-filen, eller direkte i databasekonfigurasjonsmodulen din.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Sjekk påloggingsdelen i dashbordet for nøyaktige verdier.Prosjektstruktur
├── app/
│ ├── main.py # Inngangspunkt for FastAPI-applikasjonen
│ ├── routers/ # Rute-moduler
│ ├── models/ # SQLAlchemy-modeller
│ ├── schemas/ # Pydantic-skjemaer
│ └── database.py # Databasetilkobling
├── templates/ # Jinja2-maler
├── static/ # CSS, JS, bilder
├── requirements.txt # Python-avhengigheter
└── Dockerfile # Docker-konfigurasjon
Vanlige oppgaver
Opprett API-endepunkt
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}
Bruke 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-skjema for 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 utviklingsserveren med auto-reload
pip install -r requirements.txt
Installer avhengigheter
pip freeze > requirements.txt
Lagre nåværende avhengigheter
Feilsøking
OperationalError: Can't connect to MySQL server
Årsak: Databaseverten er feil eller utilgjengelig.
Løsning: Sjekk at DATABASE_URL samsvarer med databaseverten fra dashbordet.
ModuleNotFoundError: No module named 'app'
Løsning: Pass på at du kjører uvicorn fra prosjektroten, og at app/__init__.py finnes.
422 Unprocessable Entity
Løsning: FastAPI validerer forespørselsdata automatisk. Sjekk svarinnholdet for detaljer om hvilke felter som ikke besto valideringen. Besøk /docs for å se det forventede forespørselsformatet.