diff --git a/Projektarbeit-3/Vorgehensweise.md b/Projektarbeit-3/Vorgehensweise.md index 1fc5834..c3239cd 100644 --- a/Projektarbeit-3/Vorgehensweise.md +++ b/Projektarbeit-3/Vorgehensweise.md @@ -56,12 +56,25 @@ Zusätzlich dazu wurden noch die Accidents und die Bikepoints aus der Live API g **Anmerkung:** Allgemein lässt sich sagen, dass die Datensätze und Exports sich in einem sehr schlechten Zustand befinden. ## API-Framework -* FastAPI - * Nimmt einem viel ab - * Generiert Doc automatisch - * Bringt Webserver mit (gunicorn) - * Später nginx reverse proxy -* Python +Es war schnell klar, dass sich Python sehr gut für die Implementation einer so einfachen Endpunkt-Struktur bestens eignet. Die erste Implementation wurde mit [Flask](https://flask.palletsprojects.com/en/1.1.x/) durchgeführt. Allerdings muss hier sehr viel selbst implementiert werden. + +[FastAPI](https://fastapi.tiangolo.com/) hingegen liefert ein komplettes Framework mit automatischer Generierung der Dokumentation. Auch das Parsen der URL Bestandteile, sowie das Serialisieren der Antwort geschieht vollkommen automatisch. Eingaben können über sog. Request-Filter vorgefiltert werden, um invalide Eingaben schnell zu erkennen. + +Ein Beispiel für einen "Hello World" Endpoint sieht wie folgt aus. +```python +from fastapi import FastAPI + +app = FastAPI() + +@app.get("/") +def root(): + return {"message": "Hello World"} +``` +Der Output ist dann `{"message": "Hello World"}` + +Die API kann dann über den eingebauten Gunicorn Server gestartet werden. Dieser wird dann später über einen Nginx Reverse-Proxy nach außen geöffnet. + +Ein anderer Grund für die Nutzung von Python war jedoch auch die Interoperabilität mit SQLite, userer gewählten Datenbank-Engine. Python nutzt hierzu die C-Implementierung (lib-sqlite) von SQLite, was bestmögliche Performance bietet. ## Endpunkterklärung