Total.js 5 (backend)
Cesty, akcie, schémy, databázy, WebSocket, view a všetko, čo beží na serveri.
Over JSON body pomocou akcie
Definuj vstupnú schému v akcii a nechaj Total.js zamietnuť neplatné požiadavky ešte pred spustením tvojho kódu.
Sprístupni akcie cez jeden API endpoint
Deklaruj endpointy ROUTE('API ...'), aby klient mohol volať mnoho akcií cez POST {schema, data} na jednej URL.
Čítaj parametre URL v ceste
Deklaruj dynamické segmenty ako {id} v ceste a čítaj ich z $.params.
Zachyť veľa URL cestou so zástupným znakom
Ukonči cestu znakom * a zachytíš všetko pod danou cestou; pre výnimky ponechaj špecifické cesty.
Obsluhuj každú HTTP metódu
Deklaruj cesty pre GET, POST, PUT, PATCH a DELETE a čítaj metódu z $.method.
Obmedz cestu pomocou flagov
Pridaj @flagy ako @json, @xml alebo @upload, aby cesta zodpovedala len požiadavkám, pre ktoré je určená.
Čítaj query string a telo požiadavky
Použi $.query pre parametre URL a $.body pre JSON alebo dáta formulára v handleri cesty.
Obmedz veľkosť payloadu a timeout cesty
Pridaj k ceste <1kb alebo <10s a obmedz veľkosť požiadavky alebo čas, ktorý môže handler zabrať.
Deklaruj typované parametre cesty v akcii
Použi voľbu params v NEWACTION, aby Total.js overil parametre URL ešte pred spustením tvojho kódu.
Vyber, ako odpovedať
Posielaj JSON, HTML, čistý text, XML, presmerovania, prázdne odpovede alebo binárne dáta z handlera cesty.
Čítaj hlavičky a pracuj s cookies
Čítaj hlavičky požiadavky z $.headers, čítaj a zapisuj cookies cez $.cookie() a nastavuj hlavičky odpovede.
Prijímaj nahrávanie súborov
Prijmi multipart/form-data s flagom @upload a čítaj nahrané súbory z $.files.
Povoľ požiadavky z iných origin cez CORS
Zavolaj CORS(), aby mohol tvoje cesty z prehliadača používať jeden origin, viac origin alebo každý origin.
Vykresli view bez písania handlera
Cesta bez handlera vykreslí view pomenované podľa jej URL, alebo view, ktoré uvedieš.
Vyberte správny typ vstupu pre akciu
Vyberte typy vstupov, parametrov, definícií dotazu a výstupu vrátane konverzií a odmietnutých hodnôt.
Over query string v akcii
Deklaruj query v NEWACTION na overenie a prevod parametrov URL a čítaj čisté hodnoty z $.query.
Filtruj odpoveď akcie pomocou output
Deklaruj output, aby z akcie odišli len uvedené polia, napríklad aby si nikdy neprezradil hash hesla.
Vyžaduj v akcii používateľa alebo oprávnenie
Použi voľby user a permissions v NEWACTION, aby autorizácia bola pri akcii a nie pri každej ceste.
Chráň cesty cez AUTH
Over každú požiadavku cez AUTH() a obmedz cesty na prihlásených alebo anonymných používateľov prefixmi + a -.
Deklaruj cestu priamo v akcii
Daj cestu do voľby route v NEWACTION a maj URL, validáciu a kód na jednom mieste.
Prihlasuj používateľov vstavanou session autentifikáciou
Odovzdaj AUTH() objekt s voľbami a získaš podpísané session cookies, úložisko sessions a odhlásenie bez písania infraštruktúry.
Volaj akciu z vlastného kódu
Použi ACTION() na spustenie akcie z časovača, úlohy alebo inej akcie s vlastným payloadom, query a používateľom.
Zreťaz viac akcií v jednej ceste
Vymenuj viac akcií za --> a spusti ich postupne nad rovnakým payloadom; označ, ktorá odpovie pomocou (response).
Pridaj middleware k ceste
Zaregistruj middleware cez MIDDLEWARE() a pripoj ho k cestám príznakom #názov.
Vytvor chat cez WebSocket
Deklaruj cestu SOCKET, počúvaj správy a rozposielaj ich všetkým pripojeným klientom.
Pripoj sa k serveru WebSocket z Node
Použi WEBSOCKETCLIENT na otvorenie WebSocket spojenia z tvojej aplikácie, posielanie správ a reakciu na odpovede.
Oddeľ kód pomocou udalostí
Vysielaj a počúvaj udalosti aplikácie cez EMIT(), ON(), ONCE() a OFF(), aby sa moduly nevolali priamo.
Ukladaj a čítaj dáta vstavanou databázou NoSQL
Vkladaj a dopytuj dokumenty cez NOSQL() a sprístupni ich cez akcie, bez inštalácie databázy.
Dopytuj databázu NoSQL
Filtruj, zoraďuj, stránkuj a vyberaj polia dokumentov cez where, in, between, search, sort, take, skip a fields.
Aktualizuj a odstraňuj dokumenty NoSQL
Meň dokumenty cez update() a where(), mazaj ich cez remove() a zisti, koľko ich bolo dotknutých.
Prepínaj databázy cez API DATA
DATA adresuje tabuľku ako databáza/tabuľka, takže rovnaký kód dopytov funguje so vstavaným NoSQL aj s inými databázami.
Ukladaj hodnoty do vyrovnávacej pamäte
Ukladaj hodnoty cez CACHE.set() s expiráciou, čítaj ich cez CACHE.get() a maž cez remove() alebo reset().
Ukladaj malé nastavenia cez MEMORIZE
Maj na disku JSON objekt, ktorý prežije reštart, pre počítadlá a nastavenia, ktoré nepotrebujú databázu.
Generuj unikátne id a hashe
Vytváraj id cez UID() a GUID() a hashe cez HASH() a vedz, ktoré kde použiť.
Ukladaj pomalé výsledky na disk cez FILECACHE
Použi FILECACHE() na jednorazový výpočet výsledku a jeho opätovné použitie zo súboru po určité obdobie, aj po reštarte.
Ukladaj nahrané súbory cez FILESTORAGE
Ukladaj nahrané súbory do spravovaného úložiska cez file.fs() a posielaj ich späť cez $.filefs().
Vykresli view s layoutom
Vykresli HTML view s modelom, prejdi dáta cyklom a pošli hodnoty do layoutu.
Používaj podmienky a escapovanie vo view
Vetv cez @{if}, @{else} a @{fi} a vyber medzi escapovaným výstupom @{value} a surovým HTML @{!value}.
Prechádzaj polia a objekty vo view
Opakuj značkovanie cez @{foreach} pre polia a objekty a používaj index aktuálnej položky.
Vkladaj view a zdroje
Opakovane používaj značkovanie cez @{view()} a pridávaj skripty a štýly cez @{import()}.
Napĺňaj sekcie layoutu z view
Deklaruj sekciu vo view cez @{section} a vypíš ju v layoute cez @{section('name')}; pre požiadavku môžeš zvoliť aj iný layout.
Pridaj helpery do view a čítaj config vo view
Zaregistruj funkcie v DEF.helpers, aby sa dali volať z view, a čítaj hodnoty configu cez @{'%key'}.
Konvertuj Markdown na HTML
Použi prototyp String.markdown() na vykreslenie Markdown textu do HTML, pre obsah uložený používateľmi alebo v súboroch.
Generuj text pomocou šablón Tangular
Použi Tangular.render() na vyplnenie šablón e-mailov, dokumentov a správ s podmienkami, cyklami a helpermi.
Renderujte šablóny z textu, súborov a URL pomocou TEMPLATE
Použite TEMPLATE() na renderovanie šablóny Tangular, ktorá je textom, súborom z priečinka šablón alebo URL, s vlastnými helpermi a predvoleným modelom.
Porovnajte dva zoznamy pomocou DIFFARR: čo pridať, aktualizovať a odstrániť
Použite DIFFARR() na porovnanie položiek uložených v databáze s položkami formulára a získajte tie, ktoré treba pridať, aktualizovať a odstrániť.
Query Builder: DB() a NEWDB() s vlastnou databázou
Vytvorte dotazy s DB(.find().where().sort() a nechajte vodiča registrovaného s NEWDB() ich spustiť, zatiaľ čo registrovaný vodič implementuje prevádzky databáz.
Nastav aplikáciu súborom config
Ukladaj nastavenia do súboru config a čítaj ich cez CONF.
Šifruj a dešifruj dáta kľúčom
Premeň objekty na nepriehľadné tokeny cez ENCRYPT() a prečítaj ich cez DECRYPT(), pre podpísané odkazy a krátkodobé tokeny.
Volajte externé služby cez API() a drivery NEWAPI()
Zaregistrujte driver pre službu pomocou NEWAPI() a volajte ho z akcií pomocou API(name, schema, data) s rovnakým štýlom callbacku, chyby a promise ako query builder.
Rozprávajte sa s jazykovými modelmi pomocou AIMODEL(), NEWAIMODEL() a AIPARSER()
Vytvorte žiadosť o rozhovor pomocou AIMODEL(), nechajte ovládač zaregistrovaný v NEWAIMODEL() poslať ju poskytovateľovi a prečítajte si streamované odpovede pomocou AIPARSER().
Obmedz neúspešné pokusy cez BLOCKED
Počítaj pokusy podľa IP adresy cez BLOCKED() a po dosiahnutí limitu odpovedaj 429, pre prihlásenia a obnovu hesla.
Malí globálni pomocníci: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY a PROMISIFY
Použite aplikácie globály, dátumy, hlboké kópie, dotazné riadky a sľubných pomocníkov.
Zbierajte chyby cez ErrorBuilder, zaznamenávajte ich cez ERROR() a vedťe auditnú stopu cez AUDIT()
Odpovedajte naraz s viacerými chybami pomocou ErrorBuilder, odpoveď SUCCESS(), ako ERROR() zaznamenáva zlyhania a ako AUDIT() pripisuje do súboru, kto čo urobil.
Oneskorte prácu pomocou setTimeout2() a clearTimeout2()
Použite setTimeout2() na jednorazové spustenie funkcie po tom, čo prestanú prichádzať volania; predchádzajúci časovač s rovnakým id sa nahradí, a zrušte ho cez clearTimeout2().
Tokeny viazané na prehliadač cez ENCRYPTREQ() a DECRYPTREQ()
Zašifrujte hodnotu spolu s user agentom (a voliteľne s IP adresou) požiadavky a prečítajte ju späť iba z toho istého klienta.
Zálohujte priečinok cez BACKUP() a RESTORE() a spúšťajte príkazy cez SHELL()
Zbaľte adresár do jedného súboru a znova ho rozbaľte pomocou BACKUP() a RESTORE() a spustite príkaz shellu v priečinku projektu pomocou SHELL().
Prepnite aplikáciu do údržby pomocou PAUSESERVER()
Pozastavte server podľa názvu, aby každá požiadavka dostala stránku 503, obnovte ho a majte na pamäti, že bez druhého argumentu volanie prepína stav.
Obchodné pravidlá ako text cez NEWMACRO()
Skompilujte malé pravidlá napísané v jednoduchom jazyku (IF, ELSE, AND, OR, RETURN, volania helperov) do funkcie, ktorú spustíte s modelom, takže pravidlá môžu žiť v súbore alebo v databáze.
Servíruj statické súbory z priečinka public
Súbory v adresári public sa servírujú automaticky, bez potreby cesty.
Volajte inú adresu cez AJAX() zo servera
Použite AJAX() na volanie HTTP adresy s JSON telom a získanie spracovanej odpovede, ako promise alebo s callbackom, a zistite, čo sa stane s chybami a XML.
Volaj iné HTTP API cez RESTBuilder
Posielaj požiadavky GET a POST inej službe, nastav hlavičky a timeout a čítaj stav a spracovanú odpoveď.
Uvoľnite stream po jeho skončení pomocou CLEANUP()
Použite CLEANUP() na zničenie streamu hneď po jeho dokončení alebo zlyhaní, aby nezostali otvorené deskriptory súborov, s callbackom alebo ako promise.
Prelož view do viacerých jazykov
Označ texty vo view cez @(...) a preklady daj do resource súborov, ktoré vyberá LOCALIZE().
Spúšťajte kód podľa plánu pomocou CRON
Zaregistrujte funkciu cez CRON() a päťpoložkový cron riadok a zistite, kedy sa kontrola vykonáva a ako úlohu odstrániť.
Spúšťajte náročnú prácu vo vlákne alebo v podriadenom procese
Použite NEWTHREAD() na spustenie worker vlákna, posielajte mu správy a čítajte odpovede bez blokovania hlavného procesu.
Zdieľajte niekoľko pracovných vlákien cez NEWTHREADPOOL()
Spustite pevný počet workerov, požičajte si jedného cez pool.exec(), keď je práca, vráťte ho cez release() a nechajte ostatné úlohy čakať na voľného workera.
Volajte iné servery cez REQUEST a ukladajte súbory cez DOWNLOAD
Použite REQUEST() na nízkoúrovňové HTTP volania s plnou kontrolou nad metódou, hlavičkami, query a telom a DOWNLOAD() na stiahnutie vzdialeného súboru na disk.
Odoslanie e-mailu z pohľadu
Nastavte SMTP v súbore config, vykreslite pohľad ako telo správy cez MAIL() a odošlite hotové HTML cez HTMLMAIL().
Prispôsobte stránky 404 a 401
Zaregistrujte obslužné funkcie ROUTE('#404') a ROUTE('#401') na nahradenie vstavaných chybových stránok a spustite ich sami cez $.fallback().
Pošlite si správu cez LOGMAIL()
Odošlite obyčajný text alebo JSON na adresu bez šablóny, pre logy a upozornenia, cez rovnaké nastavenia SMTP ako MAIL().
Odosielajte súbory a streamy klientovi
Servírujte súbor z disku cez $.file(), vynúťte názov pri sťahovaní, posielajte generovaný obsah cez $.stream() a odpovedzte 404, keď súbor neexistuje.
Presmerovanie požiadaviek na iný server
Použite PROXY() na priradenie prefixu URL k cieľovému serveru, zvoľte spôsob kopírovania cesty a $.proxy() na presmerovanie jednej trasy.
Sprístupnite lokálny server cez tunel pomocou PROXYSERVER() a PROXYCLIENT()
Nechajte server Total.js s verejnou adresou presmerovať požiadavky na program, ktorý beží iba na súkromnom stroji, cez WebSocket tunel, ktorý otvorí súkromná strana.
Chráňte formuláre a požiadavky tokenmi CSRF
Vytvorte token cez $.csrf(), pošlite ho spolu s požiadavkou a overte ho v middleware, aby sa požiadavky z iných stránok odmietli.
Zoskupte akcie do schémy a opätovne používajte definície inputu
Použite NEWSCHEMA() na deklarovanie súvisiacich akcií pod jedným názvom a zdieľajte definíciu inputu medzi akciami pomocou súboru v jsonschemas/.
Zostavte spracovateľský reťazec pomocou transforms
Zaregistrujte viac krokov pod jedným názvom cez NEWTRANSFORM() a nechajte hodnotu prejsť nimi v poradí cez TRANSFORM().
Výmena správ cez Total Messaging Service
Zapnite WebSocket endpoint TMS a nechajte externých klientov prijímať publikované správy, posielať správy vašej aplikácii a volať jej funkcie.
Vytvorte kompletný REST zdroj pomocou akcií
Deklarujte akcie query, read, insert, update, patch a remove nad databázou NoSQL, s validáciou, kódom 404 pre neexistujúce záznamy a trasami, ktoré priraďujú každú HTTP metódu.
Nastavte trasu WebSocket pomocou príznakov, autentifikácie a parametrov
Zvoľte typ správ cez @text alebo @binary, vyžadujte prihláseného používateľa prefixom +, overte token CSRF cez @csrf a čítajte parametre URL v trasách SOCKET.
Minifikácia a spájanie CSS, JavaScriptu a HTML
Statické súbory a odpovede HTML sa minifikujú automaticky; použite MERGE() na servírovanie viacerých súborov ako jedného a nastavenia $minify na vypnutie.
Zmena veľkosti a konverzia obrázkov
Spracujte obrázky cez Image.load(), reťazte operácie zmeny veľkosti, orezania a formátu, uložte výsledok, zmerajte jeho rozmery a servírujte náhľady cez $.image().
Skontrolujte číslové hranice, namiesto toho, aby ste si uvedomili úplnú núdzu
Skontrolujte Int, SmallInt, TinyInt a Number2 s domácimi kompaktnými schémami vrátane frakčných hodnôt, nulových a out-of-range vstupov.
Používajte vstavané pomocné funkcie pre string, number, date a array
Total.js rozširuje String, Number, Date a Array o pomocné funkcie pre slugy, hashe, formátovanie, parsovanie, zoskupovanie a vyhľadávanie a ponúka U.extend() a U.clone() pre objekty.
Zaznamenajte udalosti auditu akcie pomocou natívnej zásuvky auditu
Dodržujte možnosť auditu a explicitné volania $.audit() bez toho, aby ste kontaktovali protokolovaciu službu alebo písali citlivý vstup do protokolu aplikácie.
Beh v režime debug a release
Možnosti Total.run() volia medzi režimom debug a release; režim čítajte z DEBUG a trasy obmedzte na jeden režim pomocou @debug a @release.
Testujte aplikáciu vstavaným spúšťačom testov
Napíšte test.js, ktorý spustí aplikáciu, zaregistruje testy cez Test.push(), výsledky kontroluje cez Test.print() a pri zlyhaní skončí s nenulovým kódom.
Použite všetky CPU kódy v klastrovom režime
Začnite niekoľko pracovných procesov za jedným portom s možnosťou klastru Total.run(), a viete, čo je medzi nimi zdieľané a čo nie.
Načítajte modul JavaScriptu z URL cez IMPORT()
Stiahnite súbor s JavaScriptom z adresy, uložte ho do priečinka tmp, urobte require a použite to, čo exportuje; druhé volanie ho už nesťahuje znova.
Zostavte tok komponentov cez Flow.load() a spustite ho cez exec()
Opíšte FlowStream ako komponenty a spojenia medzi nimi, načítajte ho v aplikácii, pošlite ním správu a prečítajte odpoveď a zmeňte konfiguráciu komponentu počas behu.
Otestujte komponent Flow samostatne cez Flow.test()
Načítajte jeden komponent do vlastného toku, pošlite mu správu z kódu a prečítajte, čo posiela na svoje výstupy, bez zostavovania celého toku.
Volajte program v Pythone, ktorý stále beží, cez PYPELINE()
Spustite skript Pythonu z aplikácie, posielajte mu správy JSON cez socket a prijímajte jeho odpovede; ak skript zanikne, reštartuje sa.
Enum a string formát validácie hranice
Spustiť pozitívne a negatívne kompaktné schémy kontroly pre enum, farby, Base64, Zip, ikony, JSON a IP formáty.
TotalAPI a Componentator servisné hranice
Skontrolujte, či je dotknutý oddiel TotalAPI a Componentator lokálne, bez toho, aby ste vykonali externé servisné hovory.
QueryBuilder operácie, filtre a zmluvy s vodičom
Inšpektujte domáce možnosti DB a NEWDB, výsledky, zlyhanie, chyby a tvary filtra bez toho, aby ste zmätený staviteľ s ovládačom databáz.
Kompilácia a spustenie domáceho servera
Kompilujte spoľahlivú zložku Total.js HTML, vytvorte príklad, validujte správy, prepojte ju a uvoľnite jej zdroje.
Ovládací telefón, manuálna autorizácia a podmienené odpovede
Vykonávať jsonstring, reagovať, vykonať, úspešne, povoliť, prispôsobiť a naposledy upravené spracovanie.
Možnosti prepravy akcie a výslovné publikovanie TMS
Testovať csrf, šifrovať, komprimovať a publikovať proti skutočné HTTP a TMS namiesto predpokladu, že metadata vynakladajú správanie.
Invalidované štandardné cache s Touch
Služba a úprava dočasného statického súboru, odstránenie jeho skryté zastúpenie a odstránenia skryté 404 záznamy.
OPENCLIENT RPC, udalosti a zdieľané spojenia
Cvičiť OPENCLIENT s lokálnou protokolovou fixáciou, vrátane inicializácie, korešpondencie callback, časového výstupu a odstránenia logického klienta.
Nahrať súbory FlowStream a vykonať izolované pracovníkov
Spustiť rovnaký dôveryhodný FlowStream schémy ako pracovné drôty a detský proces, nahrať súbory .flow a odstrániť prípady.
Akčný životný cyklus, rozšírenie výsledkov a správcovia strážcov
Vykonávajte oninput, onoutput, extend, sa a su s platnými, neplatnými a neúspešnými akciami.
Skutočný SQL s native QueryBuilder a SQLite transakcie
Registrácia obmedzeného ovládača SQLite, spustenie parametrizovaného CRUD a overenie záväzku, obmedzenie zlyhania a vrátenie proti databáze podporovanej súborom.
Vyplňte aplikácie a vyhnite sa prekvapeniam balíka
Spustiť LOAD v samostatnom procese a overiť NPMINSTALL opätovné použitie už dostupného balíka bez prístupu k sieti.
Dotaz na skutočný lokálny adresár LDAP
Dopytujte izolovanú inštanciu OpenLDAP a overte výsledok väzby celkovo5 0.0.19.
Súbory aplikácie balenia ako balenie Total.js
Vytvorte miestny balík, naložte jeho definície prostredníctvom rámového štartovacieho nabíjača a overte extrakciu do .src.
Vlastné vyčistenie nahraných súborov a vytvorenie odkazov na dopyty
Overte predvolené vyčistenie nahrávania, automatické vymazanie (nepravda), explicitné vymazanie a nahradenie dopytu href.