Aura Logo
aurabasedocumentos
documentos›Edge Functions›Text, binary and HTML responses

Retornar texto, binário e HTML

Como enviar texto, imagens, arquivos ou HTML de uma função e lê-los de volta com o SDK ou HTTP simples.

6 min lido·Nível intermediário·Revisado em 12 de out. de 2026
Este texto em inglês foi gerado automaticamente a partir do original em francês e ainda não foi revisado.
Esta página foi traduzida automaticamente. A versão em inglês é oficial.
#
Decisão

1. Escolha um tipo de resposta

Sua função retornaUsar responseTypedata é
JSON'json' (padrão)o valor analisado
Texto simples, CSV, HTML'text' (ou 'json', que também retorna a string)um string
Uma imagem, um PDF, qualquer byte'blob' ou 'arrayBuffer'um Blob ou um ArrayBuffer

O modo 'json' padrão pode transportar JSON e texto. Ele não pode carregar bytes: se uma função responder com um tipo de conteúdo binário, o SDK retornará o erro invalid_response e solicitará que você escolha 'blob' ou 'arrayBuffer', para que nada seja perdido silenciosamente.

#
SDK

2. Leia com o 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' } })
  }
  // A assinatura PNG de 8 bytes, suficiente para mostrar bytes de ida e volta
  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) // "imagem/png" 8

Em uma execução real com uma função retornando os bytes 137,80,78,71,13,10,26,10,255,0,1, arrayBuffer retornou exatamente esses 11 bytes e blob retornou type=image/png size=11.

Com 'text', 'blob' ou 'arrayBuffer', o SDK ignora o envelope JSON e retorna o corpo da sua função como está. Se sua função responder com um status de erro, error.status é esse status e error.message é o texto que sua função retornou.

#
HTTP

3. Modo bruto sobre HTTP

Adicione o cabeçalho X-Aurabase-Invoke-Mode: raw e a plataforma retornará a resposta da sua função: seu status, content-type e bytes.

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

Sem esse cabeçalho, a resposta é sempre 200 com um envelope:

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

No envelope, body é o JSON analisado, o texto da sua resposta quando for UTF-8 e não JSON, ou null quando o corpo estiver vazio ou binário.

No modo bruto, cada resposta da sua função carrega x-aurabase-invoke-origin: function. Uma resposta sem ela vem do gateway ou do tempo de execução. É assim que o SDK informa um 503 retornado pelo seu código após uma interrupção da plataforma.

#
Cabeçalhos

4. Quais cabeçalhos sobrevivem

No modo raw seus cabeçalhos de resposta são filtrados, pois são servidos a partir da própria origem da plataforma.

CabeçalhoResultado
content-typeMantido. O padrão é application/octet-stream se você não definir nenhum.
Cabeçalhos personalizados (x-custom-out, cache-control,…)Mantido.
set-cookieRemovido. Uma função não pode definir cookies.
access-control-*Removido. O CORS é decidido pelo gateway.
x-aura-*, x-internal-tokenRemovido.
content-security-policy, strict-transport-security, x-content-type-optionsDefinido pela plataforma, tudo o que você enviar.
content-length, transfer-encoding, connectionRecalculado.

Uma resposta que pode executar scripts (text/html, application/xhtml+xml, image/svg+xml, application/xml, text/xml) é servida com uma política de segurança de conteúdo de sandbox. Resposta real para uma função retornando text/html:

cabeçalhos de respostatext
content-type: text/html
content-security-policy: default-src 'none'; frame-ancestors 'none'; sandbox
x-content-type-options: nosniff

Seu HTML é veiculado, mas sem cookie, armazenamento ou acesso de script à origem do seu projeto. Use o armazenamento ou seu próprio domínio para hospedar uma página da web real.

Última atualização · 12 de out. de 2026