Je eerste endpoint
Hier bouw je op verder
- Python Functies
- Python Return
- Python Dictionaries
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!"}
- Regel 3:
FastAPI()maakt een nieuwe app. Alles wat je server kan, hang je aan dezeapp. - Regel 5:
De decorator
@app.get("/")koppelt de functie eronder aan de URL/. Vraagt een browser die URL op, dan draait FastAPI deze functie. - Regel 6:
De functie heet
root, maar de naam doet er niet toe; de URL in de regel erboven bepaalt wanneer hij draait. Hetasynchoort bij FastAPI en mag je overnemen. - Regel 7:
Wat de functie teruggeeft, krijgt de browser. Een dictionary zet FastAPI zelf om in JSON.
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 bewaart soms een kopie van een pagina, de cache. Pas je iets aan en verandert er niets, dan kijk je naar die kopie. Druk op Ctrl+Shift+R om te herladen zonder cache. Hoe je ziet dat het de cache was, en hoe je hem uitzet, staat twee lessen verder bij Kijken wat de browser doet.
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.
Start je server niet, met NameError: name 'app' is not defined? Dan staat je endpoint bóven de regel app = FastAPI() — Python leest van boven naar beneden. Bekijk de troubleshooting pagina voor meer oplossingen.
Opdrachten
Opdracht 1: Predict - Wat zie je?
@app.get("/school")
async def school():
return {"school": "Mijn school", "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": "Mijn school", "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"}