ForgeFlow
de

Flow

FlowStreams mit der Flow-API verwalten

Flow · flow@11.1 flowflowstreamapiimportexportnotify

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

schemadataWas er tut
Streamskeinedie Liste der FlowStreams mit id, name, group, author, version, proxypath, size und den Live-stats der laufenden
Streams\savename, und optional author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeouterstellt einen Stream, wenn id fehlt (die Berechtigung create wird geprüft), andernfalls aktualisiert er den Stream mit dieser id und startet ihn neu
Streams\readiddie Eigenschaften eines Streams
Streams\rawiddas ganze Stream-Objekt mit seinem Design
Streams\exportidder Stream als JSON-Text in value, ohne die internen Felder (unixsocket, env, import, worker, asfiles)
Streams\importdata (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\pauseid, is (true oder false)pausiert oder setzt einen laufenden Stream fort
Streams\restartidstartet den Stream neu
Streams\removeidentfernt den Stream und seinen Ordner (die Berechtigung remove wird geprüft)
Streams\statskeinedie Summen der Installation: Versionen von Node.js, Total.js und Flow, Nachrichten, ausstehend, Speicher und Verbindungen
Variables\read / Variables\saveid (optional), datadie Variablen eines Streams oder die globalen Variablen, wenn id leer ist; Speichern schickt sie an die laufenden Streams
Console\read / Console\clearkeinedie Konsole der Anwendung
CDN\clearkeineleert den Cache der heruntergeladenen Oberflächenkomponenten
Settings\read / Settings\savedie 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

RouteVerwendung
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.