ForgeTotal.js 5
ro

Total.js 5 (backend)

Rute, acțiuni, scheme, baze de date, WebSocket, vizualizări și tot ce rulează pe server.

RețetăEtichete

Validarea unui body JSON cu o acțiune

Definește o schemă de intrare pe o acțiune și lasă Total.js să respingă cererile invalide înainte să ruleze codul tău.

routingactionsvalidation

Expunerea acțiunilor printr-un singur endpoint API

Declară endpoint-uri ROUTE('API ...') ca un client să poată apela multe acțiuni cu POST {schema, data} pe un singur URL.

routingapiactions

Citirea parametrilor URL într-o rută

Declară segmente dinamice precum {id} într-o rută și citește-le din $.params.

routingparams

Prinderea multor URL-uri cu o rută wildcard

Încheie o rută cu * ca să potrivești tot ce se află sub o cale și păstrează rute specifice pentru excepții.

routing

Tratarea fiecărei metode HTTP

Declară rute pentru GET, POST, PUT, PATCH și DELETE și citește metoda din $.method.

routinghttp

Restrângerea unei rute cu flag-uri

Adaugă @flag-uri precum @json, @xml sau @upload ca o rută să se potrivească doar cererilor pentru care este făcută.

routingflags

Citirea query string-ului și a body-ului cererii

Folosește $.query pentru parametrii URL-ului și $.body pentru date JSON sau de formular într-un handler de rută.

routingrequest

Limitarea dimensiunii payload-ului și a timeout-ului unei rute

Adaugă <1kb sau <10s unei rute ca să plafonezi dimensiunea cererii sau timpul pe care îl poate lua handler-ul.

routingsecuritylimits

Declararea parametrilor tipizați ai rutei într-o acțiune

Folosește opțiunea params din NEWACTION ca Total.js să valideze parametrii URL-ului înainte să ruleze codul tău.

actionsroutingvalidation

Alegerea modului de a răspunde

Trimite JSON, HTML, text simplu, XML, redirecționări, răspunsuri goale sau date binare dintr-un handler de rută.

routingresponse

Citirea antetelor și lucrul cu cookie-uri

Citește antetele cererii din $.headers, citește și scrie cookie-uri cu $.cookie() și setează antete de răspuns.

routingheaderscookies

Primirea încărcărilor de fișiere

Acceptă multipart/form-data cu flag-ul @upload și citește fișierele încărcate din $.files.

routinguploadfiles

Permiterea cererilor între origini cu CORS

Apelează CORS() ca o origine, mai multe origini sau toate originile să poată folosi rutele tale dintr-un browser.

securitycorsrouting

Randarea unei vizualizări fără a scrie un handler

O rută fără handler randează vizualizarea numită după URL-ul ei sau vizualizarea pe care o indici.

routingviews

Selectați tipul corect de intrare pentru o acțiune

Alegeți tipurile de intrare, parametri, întrebări și definiții de ieșire, inclusiv conversii și valori respinse.

actionsvalidationtypes

Validarea query string-ului într-o acțiune

Declară query în NEWACTION pentru a valida și converti parametrii URL-ului și citește valorile curățate din $.query.

actionsvalidationquery

Filtrarea răspunsului unei acțiuni cu output

Declară output ca din acțiune să iasă doar câmpurile enumerate, de exemplu ca să nu scapi niciodată hash-ul unei parole.

actionssecurity

Cerința unui utilizator sau a unei permisiuni într-o acțiune

Folosește opțiunile user și permissions din NEWACTION ca autorizarea să stea lângă acțiune, nu în fiecare rută.

actionsauthsecurity

Protejarea rutelor cu AUTH

Autentifică fiecare cerere cu AUTH() și limitează rutele la utilizatori autentificați sau anonimi cu prefixele + și -.

authroutingsecurity

Declararea rutei în interiorul acțiunii

Pune ruta în opțiunea route din NEWACTION și ține URL-ul, validarea și codul într-un singur loc.

actionsrouting

Autentificarea utilizatorilor cu autentificarea prin sesiune integrată

Dă un obiect de opțiuni lui AUTH() ca să primești cookie-uri de sesiune semnate, un depozit de sesiuni și delogare fără să scrii infrastructura.

authsessionssecurity

Apelarea unei acțiuni din propriul cod

Folosește ACTION() pentru a rula o acțiune dintr-un temporizator, un job sau altă acțiune, cu propriul payload, query și utilizator.

actions

Înlănțuirea mai multor acțiuni într-o rută

Enumeră mai multe acțiuni după --> pentru a le rula pe rând peste același payload și marchează care răspunde cu (response).

actionsrouting

Adăugarea unui middleware la o rută

Înregistrează un middleware cu MIDDLEWARE() și atașează-l rutelor cu flag-ul #name.

middlewareroutingsecurity

Construirea unui chat WebSocket

Declară o rută SOCKET, ascultă mesaje și transmite-le tuturor clienților conectați.

websocketrealtime

Conectarea la un server WebSocket din Node

Folosește WEBSOCKETCLIENT ca să deschizi o conexiune WebSocket din aplicația ta, să trimiți mesaje și să reacționezi la răspunsuri.

websocketrealtimeintegrations

Decuplarea codului cu evenimente

Emite și ascultă evenimente ale aplicației cu EMIT(), ON(), ONCE() și OFF(), ca modulele să nu se apeleze direct.

eventsarchitecture

Stocarea și citirea datelor cu baza de date NoSQL integrată

Inserează și interoghează documente cu NOSQL() și expune-le prin acțiuni, fără să instalezi vreo bază de date.

nosqldatabaseactions

Interogarea bazei de date NoSQL

Filtrează, sortează, paginează și proiectează documente cu where, in, between, search, sort, take, skip și fields.

nosqldatabasequeries

Actualizarea și ștergerea documentelor NoSQL

Modifică documente cu update() și where(), șterge-le cu remove() și citește câte au fost afectate.

nosqldatabase

Folosirea API-ului DATA pentru a schimba baza de date

DATA adresează un tabel ca bază/tabel, așa că același cod de interogări funcționează cu NoSQL-ul integrat și cu alte baze de date.

databasenosqlquerybuilder

Păstrarea valorilor în cache în memorie

Salvează valori cu CACHE.set() și o expirare, citește-le cu CACHE.get() și șterge-le cu remove() sau reset().

cacheperformance

Păstrarea persistentă a unor setări mici cu MEMORIZE

Ține pe disc un obiect JSON care supraviețuiește repornirilor, pentru contoare și setări care nu au nevoie de o bază de date.

storagesettings

Generarea de id-uri unice și de hash-uri

Creează id-uri cu UID() și GUID() și hash-uri cu HASH() și știi pe care să-l folosești unde.

utilitiesidssecurity

Păstrarea în cache pe disc a rezultatelor lente cu FILECACHE

Folosește FILECACHE() ca să calculezi un rezultat o singură dată și să-l refolosești dintr-un fișier o perioadă, chiar și după o repornire.

cacheperformancefiles

Stocarea fișierelor încărcate cu FILESTORAGE

Salvează încărcările într-un depozit de fișiere gestionat cu file.fs() și trimite-le înapoi cu $.filefs().

filesuploadstorage

Randarea unei vizualizări cu un layout

Randează o vizualizare HTML cu un model, parcurge date și dă valori layout-ului.

viewslayouttemplates

Folosirea condițiilor și a escapării în vizualizări

Ramifică cu @{if}, @{else} și @{fi} și alege între ieșirea escapată @{value} și HTML brut @{!value}.

viewstemplates

Parcurgerea array-urilor și a obiectelor în vizualizări

Repetă marcajul cu @{foreach} pentru array-uri și obiecte și folosește indexul elementului curent.

viewstemplates

Includerea vizualizărilor și a resurselor

Refolosește marcajul cu @{view()} și adaugă scripturi și stiluri cu @{import()}.

viewstemplatesassets

Completarea secțiunilor layout-ului dintr-o vizualizare

Declară o secțiune într-o vizualizare cu @{section} și afișeaz-o în layout cu @{section('name')}, și alege alt layout pentru fiecare cerere.

viewslayouttemplates

Adăugarea de helperi de vizualizare și citirea config-ului în vizualizări

Înregistrează funcții în DEF.helpers ca să le apelezi din vizualizări și citește valori din config cu @{'%key'}.

viewstemplatesconfig

Convertirea Markdown în HTML

Folosește prototipul String.markdown() ca să randezi text Markdown în HTML, pentru conținut stocat de utilizatori sau în fișiere.

contentmarkdown

Generarea de text cu șabloane Tangular

Folosește Tangular.render() ca să completezi șabloane pentru e-mailuri, documente și mesaje cu condiții, bucle și helperi.

templatescontent

Randează șabloane din text, fișiere și URL-uri cu TEMPLATE

Folosește TEMPLATE() pentru a randa un șablon Tangular care este un text, un fișier din folderul de șabloane sau un URL, cu proprii helperi și un model implicit.

templatescontenttangular

Compară două liste cu DIFFARR: ce se adaugă, se actualizează și se elimină

Folosește DIFFARR() pentru a compara elementele salvate în baza de date cu cele ale unui formular și a obține cele de adăugat, de actualizat și de eliminat.

utilitiesarraysforms

Constructor de căutare: DB() și NEWDB() cu propriul driver de bază

Construiți întrebări cu DB().find().where().sort() și lăsați un șofer înregistrat cu NEWDB() să le execute, în timp ce un șofer înregistrat implementează operațiunile de bază.

databasequerybuilder

Configurarea aplicației cu fișierul config

Ține setările într-un fișier config și citește-le prin CONF.

configsettings

Criptarea și decriptarea datelor cu o cheie

Transformă obiecte în token-uri opace cu ENCRYPT() și citește-le înapoi cu DECRYPT(), pentru linkuri semnate și token-uri de scurtă durată.

securitycrypto

Apelează servicii externe cu API() și driverele din NEWAPI()

Înregistrează un driver pentru un serviciu cu NEWAPI() și apelează-l din acțiuni cu API(name, schema, data), în același stil de callback, eroare și promisiune ca query builder.

apiservicesintegrations

Vorbește la modele de limbă cu AIMODEL(), NEWAIMODel() și AIPARSER()

Construiți o cerere de chat cu AIMODEL(), lăsați un șofer înregistrat cu NEWAIMODL() să-l trimită unui furnizor și citiți răspunsurile transmise cu AIPARSER().

aillmintegrations

Limitarea încercărilor eșuate cu BLOCKED

Numără încercările pe adresă IP cu BLOCKED() și răspunde 429 când limita este atinsă, pentru autentificări și resetări de parolă.

securityrate-limiting

Ajutorii globali mici: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY și PROMISIFY

Utilizați globale de aplicații, date, copii adânci, linii de interogare și asistente promise.

globalsutilitieshelpers

Adună erori cu ErrorBuilder, înregistrează-le cu ERROR() și păstrează o urmă de audit cu AUDIT()

Răspunde cu mai multe erori deodată folosind ErrorBuilder, răspunsul SUCCESS(), cum înregistrează ERROR() eșecurile și cum adaugă AUDIT() într-un fișier de jurnal cine a făcut ce.

errorsloggingaudit

Amână lucrul cu setTimeout2() și clearTimeout2()

Folosește setTimeout2() pentru a rula o funcție o singură dată după ce apelurile încetează, înlocuind temporizatorul anterior cu același id, și anulează-l cu clearTimeout2().

timersdebounceutilities

Tokenuri legate de un browser cu ENCRYPTREQ() și DECRYPTREQ()

Criptează o valoare împreună cu user agent-ul (și opțional adresa IP) cererii și citește-o înapoi doar de la același client.

securityencryptiontokens

Fă backup unui folder cu BACKUP() și RESTORE() și rulează comenzi cu SHELL()

Împachetează un director într-un singur fișier și despachetează-l din nou cu BACKUP() și RESTORE(), și rulează o comandă de shell în folderul proiectului cu SHELL().

backupshellfiles

Pune aplicația în mentenanță cu PAUSESERVER()

Pune serverul în pauză după nume, astfel încât fiecare cerere să primească o pagină 503, reia-l și ține minte că fără al doilea argument apelul alternează starea.

maintenanceserveravailability

Reguli de afaceri ca text cu NEWMACRO()

Compilează reguli mici scrise într-un limbaj simplu (IF, ELSE, AND, OR, RETURN, apeluri de helperi) într-o funcție pe care o rulezi cu un model, astfel încât regulile să poată trăi într-un fișier sau într-o bază de date.

macrosrulesscripting

Servirea fișierelor statice din folderul public

Fișierele din directorul public se servesc automat, fără nevoie de rută.

staticfiles

Apelează o altă adresă cu AJAX() de pe server

Folosește AJAX() pentru a apela o adresă HTTP cu un corp JSON și a primi răspunsul parsat, ca promisiune sau cu callback, și știi ce se întâmplă cu erorile și cu XML.

httprequestsajax

Apelarea altor API-uri HTTP cu RESTBuilder

Fă cereri GET și POST către alt serviciu, setează antete și un timeout și citește statusul și răspunsul interpretat.

integrationshttprestbuilder

Eliberează un stream când se termină cu CLEANUP()

Folosește CLEANUP() pentru a distruge un stream imediat ce s-a terminat sau a eșuat, ca să nu rămână deschise handle-uri de fișier, cu un callback sau ca promisiune.

streamsfilescleanup

Traducerea unei vizualizări în mai multe limbi

Marchează textele din vizualizări cu @(...) și oferă traducerile în fișiere de resurse alese de LOCALIZE().

localizationi18nviews

Rulează cod după un program cu CRON

Înregistrează o funcție cu CRON() și o linie cron cu cinci câmpuri și află când rulează verificarea și cum elimini o sarcină.

cronschedulerjobs

Rulează muncă grea într-un thread sau într-un proces copil

Folosește NEWTHREAD() pentru a porni un thread worker, a-i trimite mesaje și a citi răspunsurile fără a bloca procesul principal.

workerthreadperformance

Împarte câteva fire de lucru cu NEWTHREADPOOL()

Pornește un număr fix de workeri, împrumută unul cu pool.exec() când există de lucru, dă-l înapoi cu release() și lasă celelalte sarcini să aștepte un worker liber.

workerthreadpoolperformance

Apelează alte servere cu REQUEST și salvează fișiere cu DOWNLOAD

Folosește REQUEST() pentru apeluri HTTP de nivel scăzut cu control deplin asupra metodei, antetelor, query-ului și corpului, și DOWNLOAD() pentru a transmite un fișier de la distanță pe disc.

httprequestdownload

Trimite un e-mail dintr-un view

Configurează SMTP în fișierul config, randează un view ca și corp al mesajului cu MAIL() și trimite HTML gata făcut cu HTMLMAIL().

mailsmtpemail

Personalizează paginile 404 și 401

Înregistrează handlere ROUTE('#404') și ROUTE('#401') pentru a înlocui paginile de eroare încorporate și declanșează-le singur cu $.fallback().

errors404routing

Trimite-ți un mesaj cu LOGMAIL()

Trimite un mesaj text simplu sau JSON la o adresă fără view, pentru jurnale și alerte, prin aceleași setări SMTP ca MAIL().

mailsmtplogging

Trimite fișiere și stream-uri către client

Servește un fișier de pe disc cu $.file(), impune un nume de descărcare, transmite conținut generat cu $.stream() și răspunde cu 404 când fișierul lipsește.

filesdownloadstream

Redirecționează cereri către un alt server

Folosește PROXY() pentru a asocia un prefix de URL cu un server din amonte, alege cum se copiază calea și $.proxy() pentru a redirecționa o singură rută.

proxygatewayintegrations

Publică un server local printr-un tunel cu PROXYSERVER() și PROXYCLIENT()

Lasă un server Total.js cu adresă publică să redirecționeze cereri către un program care rulează doar pe o mașină privată, cu un tunel WebSocket pe care îl deschide partea privată.

proxytunnelwebsocketintegrations

Protejează formularele și cererile cu token-uri CSRF

Creează un token cu $.csrf(), trimite-l odată cu cererea și verifică-l într-un middleware pentru a respinge cererile venite de pe alte site-uri.

securitycsrfmiddleware

Grupează acțiunile într-o schemă și refolosește definițiile de input

Folosește NEWSCHEMA() pentru a declara acțiuni înrudite sub un singur nume și partajează o definiție de input între acțiuni cu un fișier din jsonschemas/.

schemaactionsvalidation

Construiește un pipeline de procesare cu transforms

Înregistrează mai mulți pași sub un singur nume cu NEWTRANSFORM() și trece o valoare prin ei, în ordine, cu TRANSFORM().

transformpipeline

Schimbă mesaje cu Total Messaging Service

Activează endpoint-ul WebSocket TMS și lasă clienții externi să primească mesaje publicate, să trimită mesaje aplicației tale și să-i apeleze funcțiile.

tmspublishsubscribewebsocketmessaging

Construiește o resursă REST completă cu acțiuni

Declară acțiunile query, read, insert, update, patch și remove peste baza de date NoSQL, cu validare, un 404 pentru înregistrările lipsă și rute care asociază fiecare metodă HTTP.

actionscrudrestnosql

Configurează o rută WebSocket cu flaguri, autentificare și parametri

Alege tipul mesajelor cu @text sau @binary, cere un utilizator autentificat cu prefixul +, verifică un token CSRF cu @csrf și citește parametrii URL în rutele SOCKET.

websocketrealtimesecurity

Minifică și îmbină CSS, JavaScript și HTML

Fișierele statice și răspunsurile HTML sunt minificate automat; folosește MERGE() pentru a servi mai multe fișiere ca unul singur și setările $minify pentru a-l dezactiva.

performancecssjavascripthtmlminification

Redimensionează și convertește imagini

Procesează imagini cu Image.load(), înlănțuie operații de dimensiune, decupare și format, salvează rezultatul, măsoară-i dimensiunile și servește miniaturi cu $.image().

imagesthumbnailsgraphicsmagick

Verificați limitele schemei numerice în loc de a lua forța completă

Verificați Int, SmallInt, TinyInt și Number2 cu scheme compacte native, inclusiv valori fracționale, intrări zero și off-range.

validationschemanumbersboundaries

Folosește helperele încorporate pentru string, number, date și array

Total.js extinde String, Number, Date și Array cu helpere pentru slug-uri, hash-uri, formatare, parsare, grupare și căutare și oferă U.extend() și U.clone() pentru obiecte.

utilitieshelpersstringarraydate

Evenimentele de audit de acțiune cu un audit nativ sink

Observați opțiunea de audit și exprimați apelurile $.audit() fără a contacta un serviciu de înregistrare sau să scrieți intrări sensibile la un jurnal de aplicație.

actionsauditsecurity

Rulează în modul debug și în modul release

Opțiunile din Total.run() aleg între modul debug și release; citește modul din DEBUG și limitează rutele la un mod cu @debug și @release.

deploymentdebugreleaseenvironment

Testează aplicația cu rulerul de teste încorporat

Scrie un test.js care pornește aplicația, înregistrează teste cu Test.push(), verifică rezultatele cu Test.print() și se încheie cu un cod diferit de zero când unul eșuează.

testingci

Utilizați toate core-urile CPU cu modul de cluster

Începeți mai multe procese ale muncitorilor din spatele unui singur port cu opțiunea de cluster a Total.run(), și știți ce este împărtășit între ele și ce nu este.

clusterperformancedeployment

Încarcă un modul JavaScript de la un URL cu IMPORT()

Descarcă un fișier cu JavaScript de la o adresă, păstrează-l în folderul tmp, încarcă-l cu require și folosește ce exportă; al doilea apel nu îl mai descarcă.

modulesdownloaddependencies

Construiește un flux de componente cu Flow.load() și rulează-l cu exec()

Descrie un FlowStream ca componente și conexiunile dintre ele, încarcă-l în aplicație, trimite un mesaj prin el și citește răspunsul, și schimbă configurația unei componente cât timp rulează.

flowflowstreamcomponentsautomation

Testează o componentă Flow separat cu Flow.test()

Încarcă o componentă într-un flux al ei, trimite-i un mesaj din cod și citește ce trimite la ieșirile ei, fără să construiești tot fluxul.

flowflowstreamcomponentstests

Apelează un program Python care rămâne pornit cu PYPELINE()

Pornește un script Python din aplicație, trimite-i mesaje JSON printr-un socket și primește răspunsurile lui, cu scriptul repornit dacă se oprește.

pythonpypelineintegrationsai

Limitele de validare a enumelor și a formatului string

Executați controale compacte pozitive și negative pentru enume, Color, Base64, Zip, Icon, JSON și formate IP.

total5reference

TotalAPI și limitele de serviciu Componentator

Verificați reutilizarea ramurilor TotalAPI și Componentator local fără a face apeluri de serviciu externe.

total5reference

Operatiunile QueryBuilder, filtrele si contractul de conducere

Inspectați opțiunile native DB și NEWDB, rezultatele curate, erorile și formele de filtrare fără a confunda un constructor cu un driver de date.

total5reference

Compilați și rulați un component nativ de server

Compilați componentul de încredere Total.js HTML, creați un exemplu, validați mesajele, reconfigură-l și eliberează resursele sale.

total5reference

Controler apeluri, autorizare manuală și răspunsuri condiționale

Executați jsonstring, răspundeți, efectuați, autorizați, personalizate și ultima modificare a manipulării.

total5reference

Opțiuni de transport de acțiune și publicarea explicită a TMS

Testarea CSRF, criptarea, compresia și publicarea împotriva HTTP reală și TMS în loc să presupunem că metadata impune comportamentul.

total5reference

Cache-uri statice de la modul de eliberare invalidate cu Touch

Servează și modifică un fișier statis temporar, șterge reprezentarea sa cache și îndepărtează intrările 404 cache.

total5reference

RPC, evenimente și conexiuni partajate

Exercitați OPENCLIENT cu o fixare a protocolului local, inclusiv inițializarea, corelația de apel, timout-ul și eliminarea logică-client.

total5reference

Încărcați fișierele FlowStream și executați lucrătorii izolați

Executați același schemă de încredere FlowStream ca un fir de lucru și un proces copil, încărcați fișierele .flow și eliminați exemplele.

total5reference

Acțiunea ciclului de viață, extinderea rezultatelor și guvernatorii administratorilor

Exercitați intrarea, ieșirea, extinderea, sa și su cu acțiuni valabile, inadecvate și eșuate.

total5reference

SQL real cu tranzacțiile native QueryBuilder și SQLite

Înregistrați un driver limitat SQLite, rulați CRUD parametrizat și verificați comisiile, restricționați eșecul și rulează împotriva unei baze de date susținute de fișiere.

total5reference

Încărcați resursele de aplicație și evitați surprize de pachet de timp

Răspundeți la un proces separat și verificați NPMINSTALL reutilizarea unui pachet deja disponibil fără acces la rețea.

total5reference

Căutați un director local LDAP

Întreabă o instanță izolată OpenLDAP și verifică rezultatul de legătură în total5 0,019.

total5reference

Aplicații de pachet ca un pachet Total.js

Creați un pachet local, încărcați definițiile sale prin încărcătorul de start-up și verificați extracția în .src.

total5reference

Încărcați propriul fișier și creați link-uri de căutare

Verificați în mod implicit încărcarea de curățare, autoclear(false), clar explicit și href întrebare înlocuirea.

total5reference