FlowStreams beheren met de Flow-API
Alles wat de editor doet, loopt via één JSON-endpoint: POST /fapi/ met de body { "schema": "<name>", "data": { ... } } (de API-routes van Total.js, zie API-routes). Het adres /fapi/ komt uit de regel $api : /fapi/ van het bestand config. Elke aanroep behalve de aanmelding heeft de sessiecookie nodig; zonder is het antwoord 401: Unauthorized.
Deze aanroepen zijn tijdens het schrijven van deze pagina ook uitgeprobeerd op een lokale Flow 11.1 (Node.js 24 en total5@0.0.19).
Aanmelden
Auth|login neemt login en password en antwoordt {"success":true} met de sessiecookie. Een verkeerd paar antwoordt 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>"}}'De volgende aanroepen gebruiken -b cookie.txt.
De aanroepen
schema | data | Wat het doet | ||
|---|---|---|---|---|
Streams | geen | de lijst met FlowStreams met id, name, group, author, version, proxypath, size en de live stats van de draaiende | ||
Streams\ | save | name, en optioneel author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeout | maakt een stream aan wanneer id ontbreekt (het recht create wordt gecontroleerd), anders werkt het de stream met die id bij en herstart hem | |
Streams\ | read | id | de eigenschappen van één stream | |
Streams\ | raw | id | het hele streamobject, met zijn ontwerp | |
Streams\ | export | id | de stream als JSON-tekst in value, zonder de interne velden (unixsocket, env, import, worker, asfiles) | |
Streams\ | import | data (de JSON-tekst) | maakt een nieuwe stream uit een export (tot 10 MB), met een nieuwe id; een herhaalde proxypath wordt vervangen door een willekeurige; antwoordt {"success":true,"value":"<id>"} | |
Streams\ | pause | id, is (true of false) | pauzeert of hervat een draaiende stream | |
Streams\ | restart | id | herstart de stream | |
Streams\ | remove | id | verwijdert de stream en zijn map (het recht remove wordt gecontroleerd) | |
Streams\ | stats | geen | de totalen van de installatie: versies van Node.js, Total.js en Flow, berichten, wachtend, geheugen en verbindingen | |
Variables\ | read / Variables\ | save | id (optioneel), data | de variabelen van één stream, of de globale variabelen wanneer id leeg is; opslaan stuurt ze naar de draaiende streams |
Console\ | read / Console\ | clear | geen | de console van de toepassing |
CDN\ | clear | geen | wist de cache van de gedownloade interfacecomponenten | |
Settings\ | read / Settings\ | save | de instellingen (zie instellingen en bestanden) | alleen voor de superbeheerder |
Een stream maken en starten
Maak hem aan en importeer daarna een in de editor gebouwd ontwerp (een geëxporteerd JSON-bestand) om hem te 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"}}'Een uit de editor geëxporteerde stream bevat zijn design (de vakken en hun verbindingen), zijn components (de bron van elk) en zijn variables.
Regels van proxypath
Een stream kan HTTP-routes publiceren onder een eigen pad. Flow voegt de schuine strepen toe (demo wordt /demo/), wijst de paden af die van Flow zelf zijn (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/) met Proxy endpoint contains reserved path en wijst een pad af dat een andere stream al gebruikt. proxytimeout is de tijd in seconden die op het antwoord van de stream wordt gewacht (standaard 120).
Aanroepen van buitenaf
| Route | Gebruik |
|---|---|
GET of POST /notify/{id}/ | stuurt een melding naar de stream met die id (de POST-body is beperkt tot 1 MB); de componenten van de stream bepalen wat ze ermee doen. Antwoordt {"success":true} |
+SOCKET /{id}/ | de WebSocket van de editor voor die stream (vereist de sessie) |
GET /private/?token=<token> | toont de bestanden van de map private/ wanneer het token gelijk is aan het token van de instellingen; tien verkeerde tokens blokkeren een adres gedurende 15 minuten |
+POST /update/ | werkt de toepassing bij vanuit een .bundle-bestand; alleen voor de gebundelde versie |
Houd het token geheim, stuur deze aanroepen via HTTPS en zet Flow achter een reverse proxy wanneer het vanaf internet bereikbaar is.