Skip to main content
Stai visualizzando la documentazione per sviluppatori
Questa documentazione è per sviluppatori che lavorano con la piattaforma di sviluppo Base44. Per informazioni sulle funzioni backend nell’editor di app, consultaUsare le integrazioni.
Le funzioni backend ti permettono di eseguire codice backend personalizzato in un ambiente sicuro e isolato. Usa le funzioni per implementare logica di business che non dovrebbe essere eseguita nel browser, connetterti ad API di terze parti con credenziali protette, elaborare webhook o estendere la tua app con endpoint personalizzati. Le funzioni backend vengono eseguite su Deno, un runtime TypeScript moderno. Chiama le funzioni dal tuo frontend usando l’SDK, che gestisce automaticamente l’autenticazione. Ogni funzione ottiene anche un proprio endpoint HTTP per webhook e integrazioni esterne. Le funzioni possono anche essere eseguite automaticamente usando le automazioni. Pianifica funzioni per essere eseguite in momenti specifici o attivarle in risposta a eventi del database come la creazione, l’aggiornamento o l’eliminazione di record.
Tieni presente quanto segue:
  • Il deploy delle funzioni una alla volta non ha il limite di 50. Una singola richiesta che sostituisce tutte le funzioni del tuo progetto resta comunque limitata a 50.
  • Le funzioni backend hanno un tempo massimo di esecuzione di 5 minuti, applicato allo stesso modo sia che la funzione venga chiamata direttamente, attivata da un’automazione o invocata come passaggio di un workflow. Le richieste che superano questo limite vengono terminate.

Crea funzioni

Crea funzioni backend come file TypeScript nella directory delle funzioni del tuo progetto. Per impostazione predefinita la directory delle funzioni è base44/functions/, ma puoi personalizzare il percorso nella tua configurazione del progetto. Ogni funzione vive in una propria sottodirectory con un file entry.ts o entry.js:
functions
<function-name>
entry.ts
La CLI usa il percorso della directory relativo alla root delle funzioni come nome della funzione. Ad esempio, functions/sendWelcomeEmail/entry.ts crea una funzione chiamata sendWelcomeEmail. Puoi anche annidare le funzioni in sottodirectory per organizzazione. functions/email/send/entry.ts crea una funzione chiamata email/send.

Aggiungere un file di configurazione

Per esigenze avanzate come nomi di funzione personalizzati o automazioni, aggiungi un file function.jsonc:
functions
<function-name>
entry.ts
function.jsonc
Il file di configurazione definisce il nome della funzione e il punto di ingresso:

entry.ts

Il file di codice contiene la logica della tua funzione. Le funzioni devono usare il wrapper Deno.serve() e restituire oggetti Response:

Più file per funzione

Una funzione non è limitata a un solo entry.ts. Dividi la logica in più file nella directory della funzione e importali con percorsi relativi. Ogni file .js, .ts, .json e .jsonc nella directory della funzione viene distribuito con la funzione.
functions
process-order
entry.ts
validate.ts
types.ts
Gli import relativi vengono risolti al momento del deploy. Un import che punta a un file non distribuito con la funzione, come un file nella directory di un’altra funzione, fallisce al momento del deploy.

Condividere codice tra funzioni

Per riusare codice tra funzioni, inseriscilo in una directory shared dentro la cartella base44/. Quando distribuisci una funzione, la CLI carica insieme a essa la directory shared e il server include nel bundle solo i file condivisi che quella funzione importa. Ogni funzione viene distribuita con la propria copia del codice condiviso che usa. Questo significa che:
  • Qualsiasi funzione può importare da shared con un percorso relativo.
  • Funzioni diverse possono finire per eseguire versioni diverse dello stesso file condiviso. Se modifichi un file condiviso e distribuisci una sola funzione, aggiorni solo la copia di quella funzione. Le altre mantengono la vecchia versione finché non le ridistribuisci. Per applicare ovunque una modifica condivisa, esegui base44 functions deploy senza argomenti per ridistribuire tutte le funzioni in una volta.
base44
shared
response.ts
functions
greet
entry.ts
farewell
entry.ts
Gli import relativi possono raggiungere base44/shared/ ma non possono uscire da base44/. Per usare codice esterno a base44/, spostalo in base44/shared/ oppure importalo con uno specificatore npm: o jsr:.

Testa in locale

Esegui le tue funzioni in locale con base44 dev per testare le modifiche senza distribuire. Consulta Sviluppo locale per i dettagli.

Distribuisci le funzioni

Distribuisci le funzioni con functions deploy o deploy per inviare tutte le risorse del progetto in una volta. Puoi distribuire funzioni specifiche per nome con functions deploy <names...>, oppure usare --force per rimuovere le funzioni remote non trovate in locale. Per scaricare le funzioni distribuite nel tuo progetto locale, usa functions pull. Per vedere cosa è attualmente distribuito, usa functions list.

Chiama le funzioni

Chiama le funzioni backend dal tuo frontend usando l’SDK, o tramite HTTP per webhook e integrazioni esterne.

Tramite l’SDK

Usa base44.functions.invoke() per chiamare le funzioni dal tuo frontend. L’SDK gestisce automaticamente l’autenticazione, passando le credenziali dell’utente corrente alla tua funzione.

Tramite HTTP

Ogni funzione distribuita ottiene un endpoint HTTP a:
Questo è utile per:
  • Webhook: ricevere callback da servizi esterni come Stripe o GitHub.
  • Integrazioni esterne: consentire ad altri sistemi di interagire con la tua app.
  • Test: chiamare funzioni direttamente con strumenti come cURL o Postman.
Esempio d’uso
Quando chiami funzioni tramite HTTP diretto (come cURL o webhook), non c’è un contesto utente autenticato. Usa asServiceRole per tutte le operazioni in questi casi.

Usa l’SDK nelle funzioni

All’interno delle tue funzioni backend, puoi accedere ai dati, all’autenticazione e alle integrazioni della tua app tramite l’SDK di Base44. Usa createClientFromRequest() per creare un client dalla richiesta in arrivo. Il contesto di autenticazione dipende da come è stata chiamata la funzione:
  • Quando viene chiamata tramite l’SDK dal tuo frontend: l’autenticazione dell’utente viene passata automaticamente. Puoi accedere all’utente corrente con base44.auth.me() ed eseguire operazioni con i suoi permessi. Per leggere o scrivere dati senza che vengano applicate le regole di accesso alle entità, usa asServiceRole.
  • Quando viene chiamata tramite HTTP diretto (cURL, webhook, servizi esterni): non c’è un utente autenticato, quindi usa asServiceRole per tutte le operazioni.

Connettiti ad API di terze parti

Le funzioni backend sono uno dei diversi modi per connettersi ad API di terze parti. Sono ideali quando hai bisogno di pieno controllo sulle richieste o vuoi memorizzare in modo sicuro le chiavi API come variabili d’ambiente. Usa secrets set per configurare le variabili d’ambiente dalla CLI.

Visualizza i log

Durante lo sviluppo locale, l’output delle funzioni viene stampato direttamente nel tuo terminale senza bisogno del comando logs. Per le funzioni distribuite, visualizza i log con il comando logs. I log includono output della console, errori e informazioni di timing. Puoi filtrare per nome della funzione o intervallo di tempo. Se stai usando un agente IA di programmazione, la skill base44-troubleshooter può recuperare e analizzare automaticamente questi log.

Tipi TypeScript

Genera tipi TypeScript dalle configurazioni delle tue funzioni per ottenere sicurezza dei tipi e autocompletamento per i nomi delle funzioni nel tuo codice SDK. Scopri di più sui tipi dinamici.

Vedi anche

Questa pagina è stata tradotta con l’AI. Per le informazioni più accurate e aggiornate, consulta la versione inglese.