Je eerste endpoint
In deze les maak je je eerste FastAPI endpoint. Een endpoint is een URL waarop je server reageert.
main.py aanmaken
Maak een bestand main.py in je project:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"bericht": "Hallo wereld!"}
Wat doet deze code?
FastAPI()- Maakt een nieuwe app@app.get("/")- Reageert op de URL/return {"bericht": "..."}- Stuurt JSON data terug
Server starten
Start je server in de terminal:
fastapi dev main.py
Ga naar http://127.0.0.1:8000 in je browser. Je ziet:
{"bericht": "Hallo wereld!"}
Je browser slaat pagina's op (caching). Als je iets aanpast en het verandert niet, druk dan op Ctrl+Shift+R om de pagina te herladen zonder cache.
Meerdere endpoints
Je kunt meerdere endpoints toevoegen:
@app.get("/info")
async def info():
return {"naam": "Jouw Naam", "leeftijd": 16}
Ga naar http://127.0.0.1:8000/info om dit te testen.
Opdrachten
Opdracht 1: Predict - Wat zie je?
@app.get("/school")
async def school():
return {"school": "Corderius", "vak": "Informatica"}
Vraag: Wat zie je als je naar /school gaat?
Tip
Let op: de functie returnt een Python dictionary. Wat doet FastAPI standaard met een dictionary?
Antwoord
{"school": "Corderius", "vak": "Informatica"}
FastAPI zet de dictionary automatisch om naar JSON.
Opdracht 2: Run
Voer de code hierboven uit. Voeg het /school endpoint toe aan je main.py, start de server, en ga naar http://127.0.0.1:8000/school. Zie je dezelfde output als het antwoord hierboven?
Opdracht 3: Investigate - Dubbele URL
Wat gebeurt er als je twee endpoints met dezelfde URL maakt?
@app.get("/test")
async def test1():
return {"bericht": "Eerste"}
@app.get("/test")
async def test2():
return {"bericht": "Tweede"}
Probeer het uit! Welke van de twee zie je?
Antwoord
Je ziet {"bericht": "Eerste"}. FastAPI gebruikt het eerste endpoint dat matcht. Het tweede wordt genegeerd.
Opdracht 4: Make - Eigen endpoint
Maak een endpoint /hobby dat jouw favoriete hobby teruggeeft als JSON.
Tip
Je hebt een @app.get("/hobby") nodig met een functie die een dictionary returnt, bijvoorbeeld {"hobby": "voetbal"}.
Antwoord
@app.get("/hobby")
async def hobby():
return {"hobby": "voetbal"}
Opdracht 5: Make - Meerdere endpoints
Maak drie endpoints: /eten, /muziek, en /game die elk jouw favorieten teruggeven.
Tip
Maak voor elk endpoint een aparte functie met @app.get(...). Elke functie heeft een unieke naam nodig.
Antwoord
@app.get("/eten")
async def eten():
return {"eten": "pizza"}
@app.get("/muziek")
async def muziek():
return {"muziek": "pop"}
@app.get("/game")
async def game():
return {"game": "Minecraft"}
Oefen met Python
Dit oefenblok draait pure Python in je browser — geen FastAPI. Oefen hier de Python-concepten die je nodig hebt voor je server.
# Python dictionaries — de basis van JSON
school_info = {"school": "Corderius", "vak": "Informatica"}
# Waarden ophalen
print(school_info["school"])
print(school_info["vak"])
# Nieuw veld toevoegen
school_info["docent"] = "Meneer de Vries"
print(school_info)