FlowStreams mit der Flow-API verwalten
Alles, was der Editor tut, läuft über einen JSON-Endpunkt: POST /fapi/ mit dem Body { "schema": "<name>", "data": { ... } } (die API-Routen von Total.js, siehe API-Routen). Die Adresse /fapi/ stammt aus der Zeile $api : /fapi/ der Datei config. Jeder Aufruf außer der Anmeldung braucht das Sitzungs-Cookie; ohne es lautet die Antwort 401: Unauthorized.
Diese Aufrufe wurden beim Schreiben dieser Seite auch gegen ein lokales Flow 11.1 (Node.js 24 und total5@0.0.19) ausprobiert.
Anmelden
Auth|login nimmt login und password entgegen und antwortet {"success":true} mit dem Sitzungs-Cookie. Ein falsches Paar antwortet Invalid credentials.
curl -c cookie.txt -X POST http://localhost:8000/fapi/ \
-H 'content-type: application/json' \
-d '{"schema":"Auth|login","data":{"login":"<your login>","password":"<your password>"}}'Die nächsten Aufrufe verwenden -b cookie.txt.
Die Aufrufe
schema | data | Was er tut | ||
|---|---|---|---|---|
Streams | keine | die Liste der FlowStreams mit id, name, group, author, version, proxypath, size und den Live-stats der laufenden | ||
Streams\ | save | name, und optional author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeout | erstellt einen Stream, wenn id fehlt (die Berechtigung create wird geprüft), andernfalls aktualisiert er den Stream mit dieser id und startet ihn neu | |
Streams\ | read | id | die Eigenschaften eines Streams | |
Streams\ | raw | id | das ganze Stream-Objekt mit seinem Design | |
Streams\ | export | id | der Stream als JSON-Text in value, ohne die internen Felder (unixsocket, env, import, worker, asfiles) | |
Streams\ | import | data (der JSON-Text) | erstellt aus einem Export einen neuen Stream (bis 10 MB) mit neuer id; ein doppelter proxypath wird durch einen zufälligen ersetzt; antwortet {"success":true,"value":"<id>"} | |
Streams\ | pause | id, is (true oder false) | pausiert oder setzt einen laufenden Stream fort | |
Streams\ | restart | id | startet den Stream neu | |
Streams\ | remove | id | entfernt den Stream und seinen Ordner (die Berechtigung remove wird geprüft) | |
Streams\ | stats | keine | die Summen der Installation: Versionen von Node.js, Total.js und Flow, Nachrichten, ausstehend, Speicher und Verbindungen | |
Variables\ | read / Variables\ | save | id (optional), data | die Variablen eines Streams oder die globalen Variablen, wenn id leer ist; Speichern schickt sie an die laufenden Streams |
Console\ | read / Console\ | clear | keine | die Konsole der Anwendung |
CDN\ | clear | keine | leert den Cache der heruntergeladenen Oberflächenkomponenten | |
Settings\ | read / Settings\ | save | die Einstellungen (siehe Einstellungen und Dateien) | nur für den Super-Administrator |
Einen Stream erstellen und starten
Erstellen Sie ihn und importieren Sie dann ein im Editor gebautes Design (eine exportierte JSON-Datei), um ihn zu starten:
curl -b cookie.txt -X POST http://localhost:8000/fapi/ \
-H 'content-type: application/json' \
-d '{"schema":"Streams|save","data":{"name":"Demo","author":"Me"}}'Ein aus dem Editor exportierter Stream enthält sein design (die Boxen und ihre Verbindungen), seine components (den Quelltext jeder einzelnen) und seine variables.
Regeln für proxypath
Ein Stream kann HTTP-Routen unter einem eigenen Pfad veröffentlichen. Flow ergänzt die Schrägstriche (demo wird zu /demo/), weist die Pfade ab, die Flow selbst gehören (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/), mit Proxy endpoint contains reserved path und weist einen Pfad ab, den schon ein anderer Stream nutzt. proxytimeout ist die Zeit in Sekunden, die auf die Antwort des Streams gewartet wird (Standard 120).
Aufrufe von außen
| Route | Verwendung |
|---|---|
GET oder POST /notify/{id}/ | sendet eine Benachrichtigung an den Stream mit dieser id (der POST-Body ist auf 1 MB begrenzt); die Komponenten des Streams entscheiden, was damit geschieht. Antwortet {"success":true} |
+SOCKET /{id}/ | der WebSocket des Editors für diesen Stream (benötigt die Sitzung) |
GET /private/?token=<token> | listet die Dateien des Ordners private/, wenn das Token dem token der Einstellungen entspricht; zehn falsche Tokens sperren eine Adresse für 15 Minuten |
+POST /update/ | aktualisiert die Anwendung aus einer .bundle-Datei; nur für die gebündelte Version |
Halten Sie das token geheim, senden Sie diese Aufrufe über HTTPS und stellen Sie Flow hinter einen Reverse-Proxy, wenn es aus dem Internet erreichbar ist.