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.
1. Escolha um tipo de resposta
| Sua função retorna | Usar responseType | data é |
|---|---|---|
| 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.
2. Leia com o SDK
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.
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.
Sem esse cabeçalho, a resposta é sempre 200 com um envelope:
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.
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çalho | Resultado |
|---|---|
content-type | Mantido. O padrão é application/octet-stream se você não definir nenhum. |
Cabeçalhos personalizados (x-custom-out, cache-control,…) | Mantido. |
set-cookie | Removido. Uma função não pode definir cookies. |
access-control-* | Removido. O CORS é decidido pelo gateway. |
x-aura-*, x-internal-token | Removido. |
content-security-policy, strict-transport-security, x-content-type-options | Definido pela plataforma, tudo o que você enviar. |
content-length, transfer-encoding, connection | Recalculado. |
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:
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.