No description
Find a file
2026-08-16 19:58:55 +00:00
demo Dateien nach „demo“ hochladen 2026-08-16 19:57:13 +00:00
doc Dateien nach „doc“ hochladen 2026-08-16 19:58:55 +00:00
docker Dateien nach „docker“ hochladen 2026-08-16 19:58:24 +00:00
.gitignore Dateien nach „/“ hochladen 2026-08-16 19:55:11 +00:00
readme.md Dateien nach „/“ hochladen 2026-08-16 19:55:11 +00:00
requirements.txt Dateien nach „/“ hochladen 2026-08-16 19:55:11 +00:00

📖 Deprecated APIs SAP DM

📑 Inhaltsverzeichnis


🚀 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

Architektur

2. Datengewinnung (Phase 1)

Sequence_1

3. Datenabruf (Phase 2)

Sequence_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/.env im .gitignore eingetragen. 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

  1. Repository klonen.
  2. 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
    
  3. Abhängigkeiten installieren:
    pip install -r requirements.txt
    
  4. Umgebungsvariablen anpassen: Kopiere oder bearbeite die Datei src/.env mit 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.

  1. Wechsle in das Verzeichnis:
    cd docker
    
  2. 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.ps1 aus, um Repositories zu sammeln, und verarbeite diese anschließend mit node scan_repo.js.
  • API Test: Mit node ./demo/test_api/testaufruf.js kann 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.