Die SysML v2 REST API ist der offizielle Weg, um programmatisch auf SysML v2-Modelle zuzugreifen. Sie ist standardisiert, gut spezifiziert und antwortet auf jede Anfrage mit rohem JSON, das sich erst mal anfühlt wie ein Blick in Matrix-Code. Wer die API sinnvoll nutzen möchte, braucht eine Zwischenschicht, die diese Rohdaten in etwas Handhabbares übersetzt. Genau das baut man mit Python und Flask in erstaunlich wenigen Zeilen.
Was ist die SysML v2 REST API überhaupt?
SysML v2 ist der neue Standard für modellbasiertes Systems Engineering (MBSE). Neben der Modellierungssprache selbst definiert der Standard auch eine REST API, über die SysML v2-Repository-Server ihre Daten zugänglich machen. Jedes Repository, das diesen Standard implementiert, spricht dieselbe API-Sprache, egal ob lokal oder in der Cloud. Die API liefert Projekte, Commits und Modellelemente als JSON. Projekte sind Namensräume für Modelle; Commits sind Versionsstände vergleichbar mit Git-Commits, nur für Systemmodelle.
Warum ein Flask-Server dazwischen?
Flask ist ein schlankes Python-Web-Framework, das HTTP-Endpunkte aus einfachen Python-Funktionen macht. Die Idee ist simpel: Anstatt die SysML v2 API direkt vom Browser aus aufzurufen (was wegen CORS-Problemen und fehlender HTTPS-Unterstützung oft scheitert), schaltet man einen Python-Server dazwischen. Dieser nimmt Anfragen der Weboberfläche entgegen, spricht mit der SysML v2 API, und gibt aufbereitete, sortierte Antworten zurück. Das nennt sich Middleware und es ist so nützlich, dass man sich fragt, warum man es nicht früher gemacht hat.
Schritt 1: Flask installieren und testen
Voraussetzungen: Python 3.8 oder neuer, ein Code-Editor und ein Webbrowser. Mehr nicht. Flask wird mit einem einzigen Befehl installiert: pip install flask. Ob Flask läuft, lässt sich sofort prüfen: Eine Python-Datei mit einer einzigen Route anlegen, flask run ausführen, und im Browser 127.0.0.1:5000 aufrufen. Erscheint 'Hello World', ist Flask einsatzbereit.
Schritt 2: Projekte von der SysML v2 API abrufen
Der erste nützliche Endpunkt der SysML v2 API ist GET /projects. Er liefert eine Liste aller Projekte auf dem Server. Im Flask-Server wird dieser Aufruf in einer eigenen Python-Funktion gekapselt: Die Funktion baut die URL zusammen, sendet einen GET-Request mit requests.Session() (das ist effizienter als jedes Mal eine neue TCP-Verbindung aufzubauen), prüft den HTTP-Statuscode, parst das JSON und sortiert die Projekte alphabetisch. Das Ergebnis schickt Flask als JSON-Antwort zurück an die Webseite, wo es in einem Dropdown-Menü landet.
Schritt 3: Commits zu einem Projekt abrufen
Jedes Projekt hat eine eindeutige ID. Mit dieser ID lässt sich der zweite Kernendpunkt aufrufen: GET /projects/{id}/commits. Commits sind Versionsstände des Modells – jede gespeicherte Änderung erzeugt einen neuen Commit mit einer eigenen ID. Diese Commit-IDs sind der Schlüssel zu allem Weiteren: Modellelemente, Pakete, Anforderungen – all das lässt sich über die Commit-ID abrufen. Die Flask-Implementierung folgt demselben Muster wie bei den Projekten: URL bauen, Request senden, Antwort prüfen, sortieren, zurückgeben.
Sauber strukturiert: Logik auslagern
Eine bewährte Praxis: Die gesamte Kommunikationslogik mit der SysML v2 API gehört in eine separate Hilfsdatei, nicht in den Flask-Server selbst. Der Flask-Server bleibt damit auf seine eigentliche Aufgabe fokussiert, und zwar HTTP-Anfragen empfangen und Antworten zurückschicken. Die Hilfsdatei kümmert sich um die Details. Das macht den Code leichter lesbar und leichter erweiterbar, wenn in späteren Schritten weitere API-Endpunkte hinzukommen.
Fazit: Drei Zutaten, ein brauchbares Ergebnis
Python, Flask und ein Webbrowser reichen aus, um die SysML v2 REST API sinnvoll nutzbar zu machen. Die Architektur ist einfach, stabil und offen für Erweiterungen. Webseite ruft Flask-Server, Flask-Server ruft SysML v2 API. Wer dieses Fundament aufgebaut hat, kann darauf aufbauend beliebige Abfragen implementieren: Modellelemente lesen, Anforderungen extrahieren, SYSMOD-Strukturen auslesen. Die API ist standardisiert; der Rest ist Phantasie.
Hast du ein Thema, über das wir schreiben sollen? Lass es uns wissen.