| .gitignore | ||
| readme.md | ||
| requirements.txt | ||
📖 Deprecated APIs SAP DM
📑 Inhaltsverzeichnis
- 📖 Deprecated APIs SAP DM
🚀 Projektübersicht
Dieses Projekt dient der Überwachung, dem Vergleich und der Verwaltung von veralteten (deprecated) APIs im Umfeld von SAP Digital Manufacturing (SAP DM). Es kombiniert Web-Scraping zur automatisierten Datenerfassung mit einem FastAPI-Backend, um Endpunkte zu vergleichen und die Ergebnisse bereitzustellen. Zudem bietet es Skripte zum Scannen von Repositories an.
🏗 Architektur & Tech-Stack
Tech-Stack
- Backend: Python 3, FastAPI (
src/API/fastAPI.py) - Scraping / Automation: Python, Microsoft Edge WebDriver (
src/msedgedriver.exe) - Containerisierung: Docker, Docker Compose (
docker/Dockerfile,docker/docker-compose.yml) - Skripting: PowerShell, Node.js (
demo/scan_repositories/)
Systemarchitektur & Abläufe
Die folgenden Diagramme veranschaulichen den grundsätzlichen Datenfluss und die Architektur der Anwendung, aufgeteilt in die automatisierte Datengewinnung und den eigentlichen API-Abruf.
1. Architektur-Übersicht
2. Datengewinnung (Phase 1)
3. Datenabruf (Phase 2)
🔒 Sicherheit & Zugriffsschutz
Das System verarbeitet Schnittstellendaten und interagiert mit externen SAP-Diensten. Folgende Sicherheitsmaßnahmen sind implementiert bzw. beim Deployment zu beachten:
1. Umgang mit vertraulichen Daten (Secrets)
- Keine Hardcoded Credentials: Sensible Daten (API-Keys, Passwörter, Tokens) dürfen niemals direkt im Quellcode committet werden.
- Umgebungsvariablen (.env): Die Konfiguration erfolgt ausschließlich über die Datei src/.env.
- Git-Protection: Um versehentliches Hochladen in das Repository zu verhindern, ist die Datei
src/.envim.gitignoreeingetragen. Ein Beispiel ist enthalten.
2. API-Sicherheit (FastAPI)
- CORS (Cross-Origin Resource Sharing): In der Produktion sollten in src/API/fastAPI.py nur explizit erlaubte Origins zugelassen werden (kein allow_origins=["*"]).
- Input-Validierung: FastAPI nutzt Pydantic zur automatischen Typprüfung und Sanitization eingehender HTTP-Payloads, um Injection-Angriffe zu verhindern.
- HTTPS / TLS: Im Produktionsbetrieb muss die API zwingend über HTTPS bereitgestellt werden (z. B. über einen vorgeschalteten Reverse Proxy wie Nginx oder Traefik mit SSL-Zertifikat).
3. Container- & Infrastruktur-Sicherheit
- Non-Root User in Docker: Der Container (docker/Dockerfile) sollte die Anwendung nach Möglichkeit unter einem nicht-privilegierten Benutzer ausführen.
- Minimales Base-Image: Es wird empfohlen, schlanke Base-Images (z. B. python:3.9-slim) zu verwenden, um die Angriffsfläche durch ungenutzte System-Pakete zu minimieren.
- Headless Driver: Der Microsoft Edge Driver (msedgedriver.exe) läuft im isolierten Headless-Modus ohne interaktive Benutzersession.
📁 Projektstruktur
Hier ist ein detaillierter Überblick über die wichtigsten Verzeichnisse und Dateien im Repository:
src/: Hauptverzeichnis des Quellcodes..env: Umgebungsvariablen für das Projekt (z.B. Zugangsdaten, Ports).msedgedriver.exe: Treiber für automatisierte Browser-Interaktionen.API/: Beinhaltet die Backend-Logik.fastAPI.py: Haupteinstiegspunkt für den API-Server.endpoint_compare.py: Logik zum Vergleichen von aktuellen und veralteten API-Endpunkten.
core/: Kernfunktionalitäten.fetchWhatsNew.py: Skript zum Abrufen von Neuigkeiten/Änderungen (Scraping/API-Calls).
docker/: Konfiguration für die Container-Bereitstellung.Dockerfile: Definition des Images für die FastAPI-Anwendung.docker-compose.yml: Multi-Container-Orchestrierung.logs/: Mount-Point für Container-Logs.
demo/: Skripte und Beispiele zur Nutzung und zum Testen.scan_repositories/: Tools zum Durchsuchen von Code-Basen.get_all_repositories.ps1: PowerShell-Skript zum Abrufen von Repositories.scan_repo.js: Node.js-Skript zur Analyse der gefundenen Repos.
test_api/:testaufruf.js: JavaScript-Beispielaufruf gegen das FastAPI-Backend.
systemctl_service/:sap-api.service: Vorlage für die Einrichtung als Linux Systemd-Dienst.
requirements.txt: Python-Abhängigkeiten.
💻 Lokale Entwicklung & Setup
Voraussetzungen
- Python 3.8 oder höher
- Node.js (für Demo-Skripte)
- Microsoft Edge Browser (passend zur
msedgedriver.exe)
Installation
- Repository klonen.
- Virtuelle Umgebung erstellen und aktivieren:
# Unter Linux/macOS: python -m venv venv source venv/bin/activate # Unter Windows (PowerShell): python -m venv venv . env\Scripts activate - Abhängigkeiten installieren:
pip install -r requirements.txt - Umgebungsvariablen anpassen: Kopiere oder bearbeite die Datei
src/.envmit den entsprechenden Credentials.
API Starten
Führe die FastAPI-Anwendung aus dem src-Verzeichnis aus:
cd src
uvicorn API.fastAPI:app --reload
🐳 Docker Deployment
Für eine isolierte und plattformunabhängige Bereitstellung wird Docker empfohlen.
- Wechsle in das Verzeichnis:
cd docker - Starte die Container im Hintergrund:
docker-compose up -d --build
Die API ist nun unter http://localhost:<PORT> erreichbar. Logs finden sich im Verzeichnis docker/logs/.
Tipp: Um die Container wieder zu stoppen, nutze docker-compose down im gleichen Verzeichnis.
🛠 Skripte & Demos
Im Ordner demo/ befinden sich nützliche Hilfsskripte:
- Repository Scanner: Führe
./demo/scan_repositories/get_all_repositories.ps1aus, um Repositories zu sammeln, und verarbeite diese anschließend mitnode scan_repo.js. - API Test: Mit
node ./demo/test_api/testaufruf.jskann ein initialer Funktionstest der laufenden API durchgeführt werden.
Hinweise
Da aktuell die Abfrage über den Edge-Browser erfolgt, ist das Scraping nur bei installiertem Browser möglich.


