Управление на FlowStreams с API на Flow
Всичко, което прави редакторът, минава през една JSON крайна точка: POST /fapi/ с тяло { "schema": "<name>", "data": { ... } } (API маршрутите на Total.js, вижте API маршрути). Адресът /fapi/ идва от реда $api : /fapi/ във файла config. Всяко извикване освен входа изисква бисквитката на сесията; без нея отговорът е 401: Unauthorized.
Тези извиквания бяха опитани и срещу локален Flow 11.1 (Node.js 24 и total5@0.0.19) докато се пишеше тази страница.
Вход
Auth|login приема login и password и отговаря {"success":true} с бисквитката на сесията. Грешна двойка отговаря 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>"}}'Следващите извиквания използват -b cookie.txt.
Извикванията
schema | data | Какво прави | ||
|---|---|---|---|---|
Streams | няма | списъкът с FlowStreams с id, name, group, author, version, proxypath, size и живите stats на работещите | ||
Streams\ | save | name, и по избор author, version, icon, color, group, url, reference, readme, memory, cloning, proxypath, proxytimeout | създава поток, когато липсва id (проверява се правото create), иначе обновява потока с този id и го рестартира | |
Streams\ | read | id | свойствата на един поток | |
Streams\ | raw | id | целият обект на потока с неговия дизайн | |
Streams\ | export | id | потокът като JSON текст в value, без вътрешните полета (unixsocket, env, import, worker, asfiles) | |
Streams\ | import | data (JSON текстът) | създава нов поток от експорт (до 10 MB) с нов id; повторен proxypath се заменя със случаен; отговаря {"success":true,"value":"<id>"} | |
Streams\ | pause | id, is (true или false) | паузира или възобновява работещ поток | |
Streams\ | restart | id | рестартира потока | |
Streams\ | remove | id | премахва потока и неговата папка (проверява се правото remove) | |
Streams\ | stats | няма | общите стойности на инсталацията: версии на Node.js, Total.js и Flow, съобщения, чакащи, памет и връзки | |
Variables\ | read / Variables\ | save | id (по избор), data | променливите на един поток или глобалните променливи, когато id е празно; записването ги изпраща на работещите потоци |
Console\ | read / Console\ | clear | няма | конзолата на приложението |
CDN\ | clear | няма | изчиства кеша на изтеглените компоненти на интерфейса | |
Settings\ | read / Settings\ | save | настройките (вижте настройки и файлове) | само за супер администратора |
Създаване на поток и стартирането му
Създайте го и после импортирайте дизайн, изграден в редактора (експортиран JSON файл), за да го стартирате:
curl -b cookie.txt -X POST http://localhost:8000/fapi/ \
-H 'content-type: application/json' \
-d '{"schema":"Streams|save","data":{"name":"Demo","author":"Me"}}'Поток, експортиран от редактора, носи своя design (кутиите и връзките им), своите components (изходния код на всеки) и своите variables.
Правила за proxypath
Потокът може да публикува HTTP маршрути под собствен път. Flow добавя наклонените черти (demo става /demo/), отхвърля пътищата, които принадлежат на самия Flow (/, /cdn/, /fapi/, /private/, /flows/, /designer/, /parts/, /forms/, /css/, /js/, /fonts/, /panels/) с Proxy endpoint contains reserved path и отхвърля път, който вече използва друг поток. proxytimeout е времето в секунди за изчакване на отговора на потока (по подразбиране 120).
Извиквания отвън
| Маршрут | Употреба |
|---|---|
GET или POST /notify/{id}/ | изпраща известие на потока с този id (тялото на POST е ограничено до 1 MB); компонентите на потока решават какво да правят с него. Отговаря {"success":true} |
+SOCKET /{id}/ | WebSocket на редактора за този поток (изисква сесия) |
GET /private/?token=<token> | изброява файловете в папката private/, когато токенът е равен на token от настройките; десет грешни токена блокират адрес за 15 минути |
+POST /update/ | обновява приложението от файл .bundle; само за пакетираната версия |
Пазете token в тайна, изпращайте тези извиквания през HTTPS и поставете Flow зад обратен прокси, когато е достъпен от интернет.