Overzicht

FastAPI is een modern, hoogperformant Python-webframework voor het bouwen van API's. Het beschikt standaard over automatische interactieve documentatie, validatie van type-hints en async-ondersteuning.

Voordat je begint
Zorg ervoor dat je dashboard geopend is - je hebt de daar getoonde Git-inloggegevens nodig. Dit sjabloon bevat FastAPI, Uvicorn, SQLAlchemy ORM, PyMySQL-driver, Pydantic en Jinja2-templating.

Snelstart

1

Repository aanmaken vanuit sjabloon

Ga in je dashboard naar het tabblad Tools & Deployment. Klik op de knop "New Repository", selecteer het FastAPI-sjabloon uit het dropdownmenu, voer een repository-naam en subdomein in en klik vervolgens op "Create Repository".

2

Je repository klonen

git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
3

Afhankelijkheden installeren

pip install -r requirements.txt
4

Ontwikkelingsserver starten

uvicorn app.main:app --reload

De server draait op http://localhost:8000. Interactieve API-documentatie op http://localhost:8000/docs.

5

Je wijzigingen pushen

git add .
git commit -m "Initial setup"
git push origin main
Elke push naar Git implementeert automatisch je applicatie. Bekijk je Module Work URL op het dashboard om je live site te zien.

Lokale ontwikkeling met Docker

Als je geen Python lokaal hebt geïnstalleerd, kun je Docker gebruiken om je FastAPI-applicatie uit te voeren.

Wat is Docker?
Docker maakt geïsoleerde "containers" met alle software die je nodig hebt (Python, pip) zonder ze op je computer te installeren.

Commando's uitvoeren met 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"

Databaseconfiguratie

Het NStrim-platform biedt je een MySQL/MariaDB-database. Configureer je verbinding in het .env-bestand of direct in je databaseconfiguratiemodule.

DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
Belangrijk
Je databasenaam en gebruikersnaam zijn meestal hetzelfde als je dashboard-gebruikersnaam (bijv. student01). Controleer het inloggegevens-gedeelte van je dashboard voor de exacte waarden.

Projectstructuur

├── app/
│   ├── main.py                # FastAPI-applicatie-startpunt
│   ├── routers/               # Route-modules
│   ├── models/                # SQLAlchemy-modellen
│   ├── schemas/               # Pydantic-schema's
│   └── database.py            # Database-verbinding
├── templates/                 # Jinja2-templates
├── static/                    # CSS, JS, afbeeldingen
├── requirements.txt           # Python-afhankelijkheden
└── Dockerfile                 # Docker-configuratie
        

Veelvoorkomende taken

Een API-endpoint aanmaken

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}

SQLAlchemy gebruiken

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-schema voor validatie

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

Handige commando's

uvicorn app.main:app --reload Dev-server starten met auto-reload
pip install -r requirements.txt Afhankelijkheden installeren
pip freeze > requirements.txt Huidige afhankelijkheden opslaan

Probleemoplossing

OperationalError: Can't connect to MySQL server

Oorzaak: Database-host is onjuist of niet bereikbaar.

Oplossing: Controleer of DATABASE_URL overeenkomt met de database-host uit je dashboard.

ModuleNotFoundError: No module named 'app'

Oplossing: Zorg ervoor dat je uvicorn vanuit de hoofdmap van het project uitvoert en dat app/__init__.py bestaat.

422 Unprocessable Entity

Oplossing: FastAPI valideert verzoekgegevens automatisch. Bekijk de responsbody voor details over welke velden de validatie niet hebben doorstaan. Bezoek /docs om het verwachte verzoekformaat te zien.

Implementatie-workflow

Codewijziging git push pip install Live!
Voor meer informatie kun je de officiële FastAPI-documentatie raadplegen.