Te veel verzoeken: de server van deze reeks
Om te zien wat veel verzoeken met een server doen, heb je een server nodig die zo weinig mogelijk doet. Die zet je hier klaar.
Maak voor deze reeks een nieuwe map veiligheid-dos, naast je eigen
project, en open die in VS Code. De server en de scripts van deze reeks komen daarin. Zo blijft je eigen gastenboek heel. Aan
het eind van de reeks pas je het geleerde toe op je eigen project.
Maak in die map een virtual environment en installeer de packages; hoe dat gaat staat bij Een map per reeks.
Het startbestand
Je begint met het kleinste endpoint dat er is, een dat op een GET-verzoek
reageert. Zet dit in main.py in die map:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"bericht": "Hallo wereld!"}
Starten
Stuur de verzoeken in deze reeks uitsluitend naar je eigen server op
127.0.0.1. Dat adres wijst altijd naar je eigen computer en verlaat het
netwerk niet. Een ander zijn server bestoken met verzoeken is een aanval, en
strafbaar, ook als het "maar een testje" is.
Start je server met fastapi dev main.py, en open http://127.0.0.1:8000/ in
je browser.
Zo ziet je main.py er nu uit
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"bericht": "Hallo wereld!"}
Dit is de beginstand. In les 5 komt er een limiet bij.
Er gaat iets mis
Address already in use
Je browser toont iets anders dan Hallo wereld!, bijvoorbeeld
{"detail":"Not Found"}. In de terminal van je nieuwe server eindigt de
melding op Windows met:
[WinError 10048] Elk socketadres (protocol/netwerkadres/poort) kan normaal slechts één keer worden gebruikt
In een Engelse Windows staat er only one usage of each socket address. Op
macOS staat er [Errno 48] Address already in use, op Linux
[Errno 98] Address already in use.
Oorzaak: de server van een vorige reeks draait nog op poort 8000, in een ander venster van VS Code. Je nieuwe server kon niet starten, en je browser kreeg antwoord van de oude.
Oplossing: stop de oude server met Ctrl+C in zijn terminal, en start deze opnieuw.
Opdrachten
Opdracht 1: Run - Een pad dat niet bestaat
Open http://127.0.0.1:8000/hallo. Wat zie je, en wat staat er in de terminal
van je server?
Antwoord
In je browser staat {"detail":"Not Found"}, en in de terminal een regel met
GET /hallo en 404 Not Found. Ook een verzoek naar een pad dat niet bestaat,
moet je server beantwoorden.
Door naar les 2: wat een verzoek kost.