ForgeTotal.js 5
it

Total.js 5 (backend)

Route, azioni, schemi, database, WebSocket, viste e tutto ciò che gira sul server.

RicettaTag

Validare un body JSON con un'azione

Definisci uno schema di input su un'azione e lascia che Total.js respinga le richieste non valide prima che il tuo codice venga eseguito.

routingactionsvalidation

Esporre azioni tramite un unico endpoint API

Dichiara endpoint ROUTE('API ...') così un client può chiamare molte azioni con POST {schema, data} su un'unica URL.

routingapiactions

Leggere i parametri dell'URL in una route

Dichiara segmenti dinamici come {id} in una route e leggili da $.params.

routingparams

Intercettare molte URL con una route jolly

Termina una route con * per corrispondere a tutto ciò che sta sotto un percorso e tieni route specifiche per le eccezioni.

routing

Gestire ogni metodo HTTP

Dichiara route per GET, POST, PUT, PATCH e DELETE e leggi il metodo da $.method.

routinghttp

Limitare una route con i flag

Aggiungi @flag come @json, @xml o @upload così una route corrisponde solo alle richieste a cui è destinata.

routingflags

Leggere la query string e il body della richiesta

Usa $.query per i parametri dell'URL e $.body per i dati JSON o di modulo in un handler di route.

routingrequest

Limitare la dimensione del payload e il timeout di una route

Aggiungi <1kb o <10s a una route per limitare la dimensione della richiesta o il tempo a disposizione dell'handler.

routingsecuritylimits

Dichiarare parametri di route tipizzati in un'azione

Usa l'opzione params di NEWACTION affinché Total.js validi i parametri dell'URL prima che il tuo codice venga eseguito.

actionsroutingvalidation

Scegliere come rispondere

Invia JSON, HTML, testo semplice, XML, redirect, risposte vuote o dati binari da un handler di route.

routingresponse

Leggere gli header e lavorare con i cookie

Leggi gli header della richiesta da $.headers, leggi e scrivi cookie con $.cookie() e imposta header di risposta.

routingheaderscookies

Ricevere upload di file

Accetta multipart/form-data con il flag @upload e leggi i file caricati da $.files.

routinguploadfiles

Consentire richieste cross-origin con CORS

Chiama CORS() per consentire a un'origine, a più origini o a ogni origine di usare le tue route da un browser.

securitycorsrouting

Renderizzare una vista senza scrivere un handler

Una route senza handler renderizza la vista che ha il nome della sua URL, o la vista che indichi.

routingviews

Selezionare il tipo di input giusto per un'azione

Selezionare i tipi per le definizioni di input, parametri, query e output, comprese conversioni e valori rifiutati.

actionsvalidationtypes

Validare la query string in un'azione

Dichiara query in NEWACTION per validare e convertire i parametri dell'URL e leggi i valori puliti da $.query.

actionsvalidationquery

Filtrare la risposta di un'azione con output

Dichiara output affinché escano dall'azione solo i campi elencati, ad esempio per non far mai trapelare un hash di password.

actionssecurity

Richiedere un utente o un permesso in un'azione

Usa le opzioni user e permissions di NEWACTION così l'autorizzazione sta accanto all'azione e non in ogni route.

actionsauthsecurity

Proteggere le route con AUTH

Autentica ogni richiesta con AUTH() e limita le route a utenti autenticati o anonimi con i prefissi + e -.

authroutingsecurity

Dichiarare la route dentro l'azione

Metti la route nell'opzione route di NEWACTION e tieni URL, validazione e codice in un unico posto.

actionsrouting

Far accedere gli utenti con l'autenticazione a sessione integrata

Passa un oggetto di opzioni ad AUTH() per ottenere cookie di sessione firmati, un archivio di sessioni e il logout senza scrivere l'infrastruttura.

authsessionssecurity

Chiamare un'azione dal tuo codice

Usa ACTION() per eseguire un'azione da un timer, un job o un'altra azione, con payload, query e utente propri.

actions

Concatenare più azioni in una route

Elenca più azioni dopo --> per eseguirle in sequenza sullo stesso payload e indica quale risponde con (response).

actionsrouting

Aggiungere un middleware a una route

Registra un middleware con MIDDLEWARE() e collegalo alle route con il flag #name.

middlewareroutingsecurity

Costruire una chat WebSocket

Dichiara una route SOCKET, ascolta i messaggi e trasmettili a tutti i client connessi.

websocketrealtime

Connettersi a un server WebSocket da Node

Usa WEBSOCKETCLIENT per aprire una connessione WebSocket dalla tua app, inviare messaggi e reagire alle risposte.

websocketrealtimeintegrations

Disaccoppiare il codice con gli eventi

Emetti e ascolta eventi dell'applicazione con EMIT(), ON(), ONCE() e OFF() affinché i moduli non si chiamino direttamente.

eventsarchitecture

Archiviare e leggere dati con il database NoSQL integrato

Inserisci e interroga documenti con NOSQL() ed esponili tramite azioni, senza installare alcun database.

nosqldatabaseactions

Interrogare il database NoSQL

Filtra, ordina, impagina e proietta documenti con where, in, between, search, sort, take, skip e fields.

nosqldatabasequeries

Aggiornare e rimuovere documenti NoSQL

Modifica documenti con update() e where(), eliminali con remove() e leggi quanti ne sono stati interessati.

nosqldatabase

Usare l'API DATA per cambiare database

DATA indirizza una tabella come database/tabella, così lo stesso codice di query funziona con il NoSQL integrato e con altri database.

databasenosqlquerybuilder

Mettere valori in cache in memoria

Salva valori con CACHE.set() e una scadenza, leggili con CACHE.get() ed eliminali con remove() o reset().

cacheperformance

Rendere persistenti piccole impostazioni con MEMORIZE

Tieni su disco un oggetto JSON che sopravvive ai riavvii, per contatori e impostazioni che non richiedono un database.

storagesettings

Generare id univoci e hash

Crea id con UID() e GUID() e hash con HASH(), e sappi quale usare dove.

utilitiesidssecurity

Mettere in cache su disco risultati lenti con FILECACHE

Usa FILECACHE() per calcolare un risultato una volta e riutilizzarlo da un file per un periodo, anche dopo un riavvio.

cacheperformancefiles

Archiviare i file caricati con FILESTORAGE

Salva gli upload in un archivio di file gestito con file.fs() e rispedisci i file con $.filefs().

filesuploadstorage

Renderizzare una vista con un layout

Renderizza una vista HTML con un modello, scorri i dati e passa valori al layout.

viewslayouttemplates

Usare condizioni ed escape nelle viste

Ramifica con @{if}, @{else} e @{fi} e scegli tra l'output con escape @{value} e l'HTML grezzo @{!value}.

viewstemplates

Scorrere array e oggetti nelle viste

Ripeti il markup con @{foreach} per array e oggetti e usa l'indice dell'elemento corrente.

viewstemplates

Includere viste e risorse

Riutilizza il markup con @{view()} e aggiungi script e stili con @{import()}.

viewstemplatesassets

Riempire sezioni del layout da una vista

Dichiara una sezione in una vista con @{section} e stampala nel layout con @{section('name')}, e scegli un altro layout per richiesta.

viewslayouttemplates

Aggiungere helper di vista e leggere la config nelle viste

Registra funzioni in DEF.helpers per chiamarle dalle viste e leggi i valori di config con @{'%key'}.

viewstemplatesconfig

Convertire Markdown in HTML

Usa il prototipo String.markdown() per rendere testo Markdown in HTML, per contenuti salvati dagli utenti o in file.

contentmarkdown

Generare testo con i template Tangular

Usa Tangular.render() per riempire modelli di e-mail, documenti e messaggi con condizioni, cicli e helper.

templatescontent

Renderizza template da testo, file e URL con TEMPLATE

Usa TEMPLATE() per renderizzare un template Tangular che è un testo, un file della cartella dei template o un URL, con i propri helper e un modello predefinito.

templatescontenttangular

Confronta due liste con DIFFARR: cosa aggiungere, aggiornare e rimuovere

Usa DIFFARR() per confrontare gli elementi salvati nel database con quelli di un modulo e ottenere quelli da aggiungere, aggiornare e rimuovere.

utilitiesarraysforms

Query Builder: DB() e NEWDB() con il proprio driver di database

Costruisci domande con DB().find().where().sort() e lascia che un driver registrato con NEWDB() li esegue, mentre un driver registratore implementa operazioni di database supportate.

databasequerybuilder

Configurare l'app con il file config

Tieni le impostazioni in un file config e leggile tramite CONF.

configsettings

Cifrare e decifrare dati con una chiave

Trasforma oggetti in token opachi con ENCRYPT() e rileggili con DECRYPT(), per link firmati e token di breve durata.

securitycrypto

Chiama servizi esterni con API() e i driver di NEWAPI()

Registra un driver per un servizio con NEWAPI() e chiamalo dalle azioni con API(name, schema, data), con lo stesso stile di callback, errore e promise del query builder.

apiservicesintegrations

Parla con i modelli linguistici con AIMODEL(), NEWAIMODEL() e AIPARSER()

Crea una richiesta di chat con AIMODEL(), lascia che un conducente registrato con NEWAIMODEL() la invii a un provider e leggi le risposte in streaming con AIPARSER().

aillmintegrations

Limitare i tentativi falliti con BLOCKED

Conta i tentativi per indirizzo IP con BLOCKED() e rispondi 429 una volta raggiunto il limite, per login e reimpostazioni di password.

securityrate-limiting

I piccoli assistenti globali: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY e PROMISIFY

Utilizzare globali di applicazione, date, copie profonde, righe di consultazione e aiutanti promesse.

globalsutilitieshelpers

Raccogli errori con ErrorBuilder, registrali con ERROR() e conserva una traccia di audit con AUDIT()

Rispondi con più errori insieme usando ErrorBuilder, la risposta SUCCESS(), come ERROR() registra i fallimenti e come AUDIT() aggiunge a un file di log chi ha fatto cosa.

errorsloggingaudit

Ritarda il lavoro con setTimeout2() e clearTimeout2()

Usa setTimeout2() per eseguire una funzione una sola volta quando le chiamate smettono di arrivare, sostituendo il timer precedente con lo stesso id, e annullalo con clearTimeout2().

timersdebounceutilities

Token legati a un browser con ENCRYPTREQ() e DECRYPTREQ()

Cifra un valore insieme allo user agent (e facoltativamente all'indirizzo IP) della richiesta e rileggilo solo dallo stesso client.

securityencryptiontokens

Esegui il backup di una cartella con BACKUP() e RESTORE(), ed esegui comandi con SHELL()

Impacchetta una directory in un solo file e scompattala di nuovo con BACKUP() e RESTORE(), ed esegui un comando della shell nella cartella del progetto con SHELL().

backupshellfiles

Metti l'applicazione in manutenzione con PAUSESERVER()

Metti in pausa il server per nome in modo che ogni richiesta riceva una pagina 503, riprendilo e sappi che senza secondo argomento la chiamata alterna lo stato.

maintenanceserveravailability

Regole di business come testo con NEWMACRO()

Compila piccole regole scritte in un linguaggio semplice (IF, ELSE, AND, OR, RETURN, chiamate a helper) in una funzione che esegui con un modello, così le regole possono vivere in un file o in un database.

macrosrulesscripting

Servire file statici dalla cartella public

I file nella directory public vengono serviti automaticamente, senza bisogno di una route.

staticfiles

Chiama un altro indirizzo con AJAX() dal server

Usa AJAX() per chiamare un indirizzo HTTP con un corpo JSON e ottenere la risposta già interpretata, come promise o con callback, e scopri cosa succede con gli errori e con XML.

httprequestsajax

Chiamare altre API HTTP con RESTBuilder

Esegui richieste GET e POST a un altro servizio, imposta header e timeout e leggi lo stato e la risposta interpretata.

integrationshttprestbuilder

Rilascia uno stream quando finisce con CLEANUP()

Usa CLEANUP() per distruggere uno stream appena è terminato o ha fallito, in modo che non restino aperti descrittori di file, con un callback o come promise.

streamsfilescleanup

Tradurre una vista in più lingue

Contrassegna i testi con @(...) nelle viste e fornisci le traduzioni in file di risorse scelti da LOCALIZE().

localizationi18nviews

Eseguire codice con una pianificazione usando CRON

Registra una funzione con CRON() e una riga cron a cinque campi, e scopri quando avviene il controllo e come rimuovere un job.

cronschedulerjobs

Eseguire lavoro pesante in un thread o in un processo figlio

Usa NEWTHREAD() per avviare un thread worker, inviargli messaggi e leggere le risposte senza bloccare il processo principale.

workerthreadperformance

Condividi pochi thread di lavoro con NEWTHREADPOOL()

Avvia un numero fisso di worker, prendine uno con pool.exec() quando c'è lavoro, restituiscilo con release() e lascia che gli altri lavori aspettino un worker libero.

workerthreadpoolperformance

Chiamare altri server con REQUEST e salvare file con DOWNLOAD

Usa REQUEST() per chiamate HTTP di basso livello con pieno controllo su metodo, header, query e corpo, e DOWNLOAD() per scaricare un file remoto su disco.

httprequestdownload

Inviare un'email da una vista

Configura SMTP nel file config, renderizza una vista come corpo del messaggio con MAIL() e invia HTML già pronto con HTMLMAIL().

mailsmtpemail

Personalizzare le pagine 404 e 401

Registra gestori ROUTE('#404') e ROUTE('#401') per sostituire le pagine di errore integrate e attivali tu stesso con $.fallback().

errors404routing

Invia a te stesso un messaggio con LOGMAIL()

Invia un messaggio di testo semplice o JSON a un indirizzo senza vista, per log e avvisi, con le stesse impostazioni SMTP di MAIL().

mailsmtplogging

Inviare file e stream al client

Servi un file dal disco con $.file(), imponi un nome di download, trasmetti contenuto generato con $.stream() e rispondi 404 quando il file manca.

filesdownloadstream

Inoltrare richieste a un altro server

Usa PROXY() per associare un prefisso di URL a un server a monte, scegli come viene copiato il percorso e $.proxy() per inoltrare una singola rotta.

proxygatewayintegrations

Pubblica un server locale tramite un tunnel con PROXYSERVER() e PROXYCLIENT()

Lascia che un server Total.js con indirizzo pubblico inoltri richieste a un programma che gira solo su una macchina privata, con un tunnel WebSocket aperto dal lato privato.

proxytunnelwebsocketintegrations

Proteggere moduli e richieste con i token CSRF

Crea un token con $.csrf(), invialo con la richiesta e verificalo in un middleware per rifiutare le richieste provenienti da altri siti.

securitycsrfmiddleware

Raggruppare le azioni in uno schema e riutilizzare le definizioni di input

Usa NEWSCHEMA() per dichiarare azioni correlate sotto un unico nome e condividi una definizione di input tra azioni con un file in jsonschemas/.

schemaactionsvalidation

Costruire una pipeline di elaborazione con i transform

Registra più passaggi sotto un unico nome con NEWTRANSFORM() e fai passare un valore attraverso di essi in ordine con TRANSFORM().

transformpipeline

Scambiare messaggi con il Total Messaging Service

Attiva l'endpoint WebSocket di TMS e lascia che client esterni ricevano messaggi pubblicati, inviino messaggi alla tua app e ne chiamino le funzioni.

tmspublishsubscribewebsocketmessaging

Costruire una risorsa REST completa con le azioni

Dichiara le azioni query, read, insert, update, patch e remove sul database NoSQL, con validazione, un 404 per i record mancanti e rotte che associano ogni metodo HTTP.

actionscrudrestnosql

Configurare una rotta WebSocket con flag, autenticazione e parametri

Scegli il tipo di messaggio con @text o @binary, richiedi un utente autenticato con il prefisso +, controlla un token CSRF con @csrf e leggi i parametri dell'URL nelle rotte SOCKET.

websocketrealtimesecurity

Minificare e unire CSS, JavaScript e HTML

I file statici e le risposte HTML vengono minificati automaticamente; usa MERGE() per servire più file come uno solo e le impostazioni $minify per disattivarlo.

performancecssjavascripthtmlminification

Ridimensionare e convertire immagini

Elabora immagini con Image.load(), concatena operazioni di dimensione, ritaglio e formato, salva il risultato, misurane le dimensioni e servi miniature con $.image().

imagesthumbnailsgraphicsmagick

Verificare i limiti di schema numerico invece di assumere una costanza completa

Controlla Int, SmallInt, TinyInt e Number2 con schemi compatti nativi, tra cui valori frazionali, input zero e out-of-range.

validationschemanumbersboundaries

Usare gli helper integrati per string, number, date e array

Total.js estende String, Number, Date e Array con helper per slug, hash, formattazione, parsing, raggruppamento e ricerca, e offre U.extend() e U.clone() per gli oggetti.

utilitieshelpersstringarraydate

Registra eventi di controllo delle azioni con un sink di controllo nativo

Osserva l'opzione di controllo e le chiamate esplicite a $.audit() senza contattare un servizio di registrazione o scrivere input sensibili in un registro dell'applicazione.

actionsauditsecurity

Eseguire in modalità debug e release

Le opzioni di Total.run() scelgono tra modalità debug e release; leggi la modalità da DEBUG e limita le rotte a una modalità con @debug e @release.

deploymentdebugreleaseenvironment

Testare l'applicazione con il test runner integrato

Scrivi un test.js che avvia l'app, registra i test con Test.push(), controlla i risultati con Test.print() ed esce con un codice diverso da zero quando uno fallisce.

testingci

Utilizzare tutti i core CPU con il modo cluster

Inizia diversi processi lavoratori dietro un unico porto con l'opzione cluster di Total.run(), e sa cosa è condiviso tra loro e cosa non è.

clusterperformancedeployment

Carica un modulo JavaScript da un URL con IMPORT()

Scarica un file JavaScript da un indirizzo, salvalo nella cartella tmp, caricalo con require e usa ciò che esporta; la seconda chiamata non lo scarica di nuovo.

modulesdownloaddependencies

Costruisci un flusso di componenti con Flow.load() ed eseguilo con exec()

Descrivi un FlowStream come componenti e le connessioni tra loro, caricalo nell'applicazione, invia un messaggio attraverso di esso e leggi la risposta, e cambia la configurazione di un componente mentre è in esecuzione.

flowflowstreamcomponentsautomation

Testa un componente Flow da solo con Flow.test()

Carica un componente in un flusso a sé, inviagli un messaggio dal codice e leggi ciò che invia alle sue uscite, senza costruire l'intero flusso.

flowflowstreamcomponentstests

Chiama un programma Python che resta in esecuzione con PYPELINE()

Avvia uno script Python dall'applicazione, inviagli messaggi JSON tramite un socket e ricevi le sue risposte, con lo script riavviato se muore.

pythonpypelineintegrationsai

Enum e limiti di validazione di string-format

Eseguire controlli di schema compatti positivi e negativi per i formati enum, Color, Base64, Zip, Icon, JSON e IP.

total5reference

I limiti di servizio di TotalAPI e Componentator

Verificare il ramo TotalAPI disabilitato e Componentator locale-cache riutilizzo senza effettuare chiamate di servizio esterne.

total5reference

Operazioni di QueryBuilder, filtri e contratti di driver

Verificare le opzioni DB e NEWDB, i risultati di quoed, gli errori e le forme di filtro senza confondere un costruttore con un driver di database.

total5reference

Compilare e eseguire un componente del server nativo

Compilare il componente di fiducia Total.js HTML, creare un esempio, valutare i messaggi, riconfigurarlo e rilasciare le sue risorse.

total5reference

Controller callbacks, autorizzazione manuale e risposte condizionali

Eseguire jsonstring, rispondere, fare, avere successo, autorizzare, personalizzare e trattare con ultima modifica.

total5reference

Opzioni di trasporto di azione e pubblicazione TMS esplicita

Test CSRF, crittografia, compressione e pubblicazione contro HTTP reale e TMS piuttosto che assumere i metadati esercitano il comportamento.

total5reference

Invalidare i cache statici in modalità di rilascio con Touch

Servire e modificare un file statico temporaneo, eliminare la sua rappresentazione cache e rimuovere le entrate 404.

total5reference

OPENCLIENT RPC, eventi e connessioni condivise

Esercitare OPENCLIENT con una fissura di protocollo locale, tra cui inizializzazione, correlazione callback, timout e rimozione logico-cliente.

total5reference

Caricare i file FlowStream e eseguire lavoratori isolati

Eseguire lo stesso schema di fiducia FlowStream come un filo lavoratore e un processo infantile, caricare i file .flow e rimuovere gli esempi.

total5reference

L'azione del ciclo di vita, l'estensione dei risultati e gli amministratori

Esercitare on-input, on-out, estende, sa e su con azioni valide, invalide e fallite.

total5reference

SQL reale con le transazioni native di QueryBuilder e SQLite

Registrare un driver limitato SQLite, eseguire CRUD e verificare il compromesso, restringere l'insufficienza e rallentare contro una base di dati supportata da file.

total5reference

Caricare le risorse dell'applicazione e evitare le sorprese del pacchetto di runtime

Eseguire LOAD in un processo separato e verificare NPMINSTALL riutilizzo di un pacchetto già disponibile senza accesso alla rete.

total5reference

Interroga una directory LDAP locale reale

Interroga un'istanza OpenLDAP isolata e verifica il risultato del collegamento in totale5 0.0.19.

total5reference

Il pacchetto di applicazione file come un pacchetti Total.js

Crea un pacchetto locale, carica le sue definizioni attraverso il caricabatterie di startup e verifica l'estrazione in .src.

total5reference

Il proprio file caricato pulito e costruire link di query

Verificare la pulizia predefinita, autoclear(false), chiaro esplicitamente e href sostituzione della domanda.

total5reference