Logo Aurabase
aurabasedocumenti
documenti›Edge Functions›Text, binary and HTML responses

Restituisce testo, binario e HTML

Come inviare testo, immagini, file o HTML da una funzione e rileggerli con l'SDK o il semplice HTTP.

6 min letto·Livello intermedio·Revisionato il 12 ott 2026
Questo testo inglese è stato generato automaticamente dall'originale francese e non è stato ancora rivisto.
Questa pagina è stata tradotta automaticamente. Fa fede la versione inglese.
#
Decisione

1. Scegli un tipo di risposta

La tua funzione ritornaUsa responseTypedata è
JSON'json' (predefinito)il valore analizzato
Testo semplice, CSV, HTML'text' (o 'json', che restituisce anche la stringa)a string
Un'immagine, un PDF, qualsiasi byte'blob' o 'arrayBuffer'un Blob o un ArrayBuffer

La modalità predefinita 'json' può trasportare JSON e testo. non può trasportare byte: se una funzione risponde con un tipo di contenuto binario, l'SDK restituisce l'errore invalid_response e ti dice di scegliere 'blob' o 'arrayBuffer', quindi nulla va perso in silenzio.

#
SDK

2. Leggilo con l'SDK

aurabase/functions/export/index.tstypescript
Deno.serve((req) => {
  const { pathname } = new URL(req.url)
  if (pathname === '/csv') {
    return new Response('id,name\n1,Ada\n', { headers: { 'content-type': 'text/csv' } })
  }
  // La firma PNG da 8 byte, sufficiente per mostrare i byte di andata e ritorno
  const bytes = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10])
  return new Response(bytes, { headers: { 'content-type': 'image/png' } })
})
client.tstypescript
const csv = await aura.functions.invoke<string>('export', { path: '/csv', responseType: 'text' })
console.log(csv.data) // "id,nome\n1,Ada\n"

const img = await aura.functions.invoke<Blob>('export', { responseType: 'blob' })
console.log(img.data?.type, img.data?.size) // "immagine/png" 8

In un'esecuzione reale con una funzione che restituisce i byte 137,80,78,71,13,10,26,10,255,0,1, arrayBuffer ha restituito esattamente quegli 11 byte e blob ha restituito type=image/png size=11.

Con 'text', 'blob' o 'arrayBuffer', l'SDK salta la busta JSON e restituisce il corpo della funzione così com'è. Se la tua funzione risponde con uno stato di errore, error.status è quello stato e error.message è il testo restituito dalla funzione.

#
HTTP

3. Modalità raw su HTTP

Aggiungi l'intestazione X-Aurabase-Invoke-Mode: raw e la piattaforma restituisce la risposta della tua funzione: il suo stato, content-type e byte.

terminalbash
curl -i -X POST "$AURA_URL/v1/functions/export/invoke" \
  -H "apikey: $AURA_ANON_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Aurabase-Invoke-Mode: raw" \
  -d '{"path":"/csv"}' --output export.csv

Senza quell'intestazione, la risposta è sempre 200 con una busta:

envelope.jsonjson
{
  "data": {
    "status": 200,
    "headers": { "content-type": "application/json" },
    "body": { "greeting": "Hello, Ada!" },
    "logs": [],
    "duration_ms": 74
  },
  "meta": null
}

Nella busta, body è il JSON analizzato, il testo della risposta quando è UTF-8 e non JSON, o null quando il corpo è vuoto o binario.

In modalità raw ogni risposta dalla tua funzione trasporta x-aurabase-invoke-origin: function. Una risposta senza di essa proviene dal gateway o dal runtime. Questo è il modo in cui l'SDK indica un 503 restituito dal tuo codice da un'interruzione della piattaforma.

#
Intestazioni

4. Quali intestazioni sopravvivono

In modalità raw le intestazioni delle risposte vengono filtrate, perché vengono servite dall'origine della piattaforma.

IntestazioneRisultato
content-typeMantenuto. Il valore predefinito è application/octet-stream se non ne imposti nessuno.
Intestazioni personalizzate (x-custom-out, cache-control, …)Mantenuto.
set-cookieRimosso. Una funzione non può impostare cookie.
access-control-*Rimosso. CORS viene deciso dal gateway.
x-aura-*, x-internal-tokenRimosso.
content-security-policy, strict-transport-security, x-content-type-optionsImpostato dalla piattaforma, qualunque cosa invii.
content-length, transfer-encoding, connectionRicalcolato.

Una risposta che può eseguire script (text/html, application/xhtml+xml, image/svg+xml, application/xml, text/xml) viene fornita con una policy di sicurezza del contenuto sandboxing. Risposta reale per una funzione che restituisce text/html:

intestazioni di rispostatext
content-type: text/html
content-security-policy: default-src 'none'; frame-ancestors 'none'; sandbox
x-content-type-options: nosniff

Il tuo HTML viene servito, ma senza cookie, archiviazione o accesso a script all'origine del tuo progetto. Utilizza Storage o il tuo dominio per ospitare una vera pagina web.

Ultimo aggiornamento · 12 ott 2026