Einführung
Dieses Lernprojekt demonstriert die Entwicklung einer performanten REST API auf Basis von FastAPI, die CRUD-Operationen (Create, Read, Update, Delete) für ein einfaches Produktmodell unterstützt. Die API interagiert mit einer MySQL-Datenbank, um Produktinformationen (wie Name, Price, Bestand) zu speichern und zu verwalten. Das gesamte System läuft in Docker-Containern, was eine einfache Bereitstellung und Verwaltung der Services ermöglicht.
Technologie-Stack:
Der in diesem Lernprojekt verwendete Technologie-Stack (FastAPI, SQLAlchemy, Docker) bietet zahlreiche Vorteile für Integration Developers, die auf effiziente, skalierbare und flexible API-Entwicklung angewiesen sind:
- FastAPI: Ein modernes, asynchrones Web-Framework, das sich durch seine Geschwindigkeit, Effizienz und automatisierte Dokumentation (Swagger und Redoc) auszeichnet.
- SQLAlchemy: Ein ORM (Object Relational Mapper), das die Datenbankinteraktionen erleichtert, indem es Python-Objekte in Datenbanktabellen abbildet.
- MySQL: Eine der beliebtesten relationalen Datenbanken, die durch ihre Zuverlässigkeit und Leistung besticht.
- Docker: Containerisierungstechnologie, die es ermöglicht, die API und die Datenbank in separaten, isolierten Umgebungen zu betreiben, was die Skalierbarkeit und Portabilität verbessert.
- Pydantic: Wird von FastAPI verwendet, um Datenvalidierung und -serialisierung auf elegante Weise zu handhaben.
Funktionen der API:
- CRUD-Operationen: Die API unterstützt die Verwaltung von Produktinformationen (CREATE, READ, UPDATE, DELETE).
- Automatische Dokumentation: Swagger-UI für API-Dokumentation und interaktive Tests (zugänglich unter
/docs
). - Datenvalidierung: Mithilfe von Pydantic-Schemas wird eine strenge Validierung der Eingabedaten gewährleistet.
- Fehlerbehandlung: Umfassende Fehlerbehandlung, die bei ungültigen Anfragen oder fehlenden Ressourcen sinnvolle Fehlermeldungen zurückgibt.
Architektur
- Modulare Struktur: Das Projekt ist in separate Module aufgeteilt (Modelle, Schemas, CRUD-Operationen, Datenbankverbindung), um die Wartbarkeit zu verbessern.
- Docker: Mit Docker Compose werden sowohl die FastAPI-Anwendung als auch die MySQL-Datenbank in Containern ausgeführt. Dies erleichtert das Setup und die Bereitstellung, unabhängig von der Host-Umgebung.
Anleitung zum Starten des Docker Containers
Voraussetzungen:
Stelle sicher, dass Docker und Docker Compose auf deinem System installiert sind. Du kannst Docker von docker.com herunterladen und installieren.
Projekt klonen:
Klone das Projekt-Repository von GitHub:
git clone https://github.com/integration-developer-de/fastapi_mysql_docker.git
Link -> https://github.com/integration-developer-de/fastapi_mysql_docker
Umgebungsvariablen konfigurieren:
Passe die env
-Datei im Hauptverzeichnis des Projekts nach deinen Wünschen an oder übernehme die Default Werte:
MYSQL_USER=root
MYSQL_PASSWORD=secret
MYSQL_DB=db
MYSQL_HOST=mysql
MYSQL_PORT=3306
API_HOST=0.0.0.0
API_PORT=8000
Docker-Container starten:
Starte die Docker-Container mit Docker Compose:
docker compose up --build
Der Befehl startet startet sowohl die FastAPI-Anwendung als auch die MySQL-Datenbank in ihren jeweiligen Containern.
API testen:
Öffne deinen Browser und gehe zu:
- API-Root: http://localhost:8000
- Swagger-Dokumentation: http://localhost:8000/docs/v1
- Redoc-Dokumentation: http://localhost:8000/redoc/v1
Diese URLs ermöglichen dir, die API zu testen und ihre Endpunkte zu erkunden.
Hier sind ein paar Screenshots vom Testprojekt:





Weitere Beiträge
- Microservices-Modell
- Enterprise Application Integration (EAI)
- Spring Boot – Kafka – Docker
- Spring Boot API – PostgreSQL – Docker
- Keycloak und IT-Sicherheit
- Die Synergie von Prozessdenken und Systemdenken
- Kafka-Cluster mit Kafdrop und Docker
- FastAPI mit MySQL und Docker
- Batch- und Streaming-Datenverarbeitung
- Strategien zur Lastbewältigung in IT-Systemen