Vai al contenuto principale
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.
Ogni progetto supporta un massimo di 50 funzioni backend.

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:
{
  "name": "sendWelcomeEmail",
  "entry": "entry.ts",
}
ProprietàDescrizione
nameOpzionale. Identificatore univoco per la funzione. Usato quando viene invocata tramite SDK o HTTP. Valore predefinito il percorso della directory relativo alla root delle funzioni.
entryIl file che contiene il codice della funzione.
automationsOpzionale. Array di configurazioni di automazione per eseguire la funzione in base a una pianificazione o in risposta a eventi del database. Consulta Automazioni per i dettagli.

entry.ts

Il file di codice contiene la logica della tua funzione. Le funzioni devono usare il wrapper Deno.serve() e restituire oggetti Response:
import { createClientFromRequest } from "npm:@base44/sdk";

Deno.serve(async (req) => {
  try {
    const base44 = createClientFromRequest(req);
    const user = await base44.auth.me();

    if (!user) {
      return Response.json({ error: "Unauthorized" }, { status: 401 });
    }

    const { name } = await req.json();

    return Response.json({
      message: `Hello, ${name || user.full_name}!`,
    });
  } catch (error) {
    return Response.json({ error: error.message }, { status: 500 });
  }
});

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.
import { base44 } from "@/api/base44Client";

const response = await base44.functions.invoke("sendWelcomeEmail", {
  name: "Alice",
});

Tramite HTTP

Ogni funzione distribuita ottiene un endpoint HTTP a:
https://<your-app-domain>/functions/<function-name>
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
curl -X POST https://your-app.base44.app/functions/sendWelcomeEmail \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'
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 utilizzando l’IA. Per informazioni più accurate e aggiornate, consulta la versione inglese.