Renvoie du texte, du binaire et du HTML
Comment envoyer du texte, des images, des fichiers ou du HTML à partir d'une fonction et les relire avec le SDK ou HTTP simple.
1. Choisissez un type de réponse
| Votre fonction renvoie | Utilisez responseType | data est |
|---|---|---|
| JSON | 'json' (par défaut) | la valeur analysée |
| Texte brut, CSV, HTML | 'text' (ou 'json', qui renvoie également la chaîne) | un string |
| Une image, un PDF, n'importe quel octet | 'blob' ou 'arrayBuffer' | un Blob ou un ArrayBuffer |
Le mode 'json' par défaut peut transporter du JSON et du texte. Il ne peut pas transporter des octets : si une fonction répond avec un type de contenu binaire, le SDK renvoie l'erreur invalid_response et vous demande de choisir 'blob' ou 'arrayBuffer', donc rien n'est perdu en silence.
2. Lisez-le avec le SDK
Dans une exécution réelle avec une fonction renvoyant les octets 137,80,78,71,13,10,26,10,255,0,1, arrayBuffer a renvoyé exactement ces 11 octets et blob a renvoyé type=image/png size=11.
Avec 'text', 'blob' ou 'arrayBuffer', le SDK ignore l'enveloppe JSON et renvoie le corps de votre fonction tel quel. Si votre fonction répond avec un statut d'erreur, error.status est ce statut et error.message est le texte renvoyé par votre fonction.
3. Mode brut sur HTTP
Ajoutez l'en-tête X-Aurabase-Invoke-Mode: raw et la plateforme renvoie la propre réponse de votre fonction : son statut, content-type et ses octets.
Sans cet en-tête, la réponse est toujours 200 avec une enveloppe :
Dans l'enveloppe, body est le JSON analysé, le texte de votre réponse lorsqu'il est en UTF-8 et non JSON, ou null lorsque le corps est vide ou binaire.
En mode brut, chaque réponse de votre fonction porte x-aurabase-invoke-origin: function. Une réponse sans cela provient de la passerelle ou du runtime. C'est ainsi que le SDK indique un 503 renvoyé par votre code suite à une panne de plateforme.
4. Quels en-têtes survivent
En mode brut, vos en-têtes de réponse sont filtrés, car ils sont servis depuis la propre origine de la plateforme.
| En-tête | Résultat |
|---|---|
content-type | Gardé. La valeur par défaut est application/octet-stream si vous n’en définissez aucun. |
En-têtes personnalisés (x-custom-out, cache-control, …) | Gardé. |
set-cookie | Supprimé. Une fonction ne peut pas définir de cookies. |
access-control-* | Supprimé. CORS est décidé par la passerelle. |
x-aura-*, x-internal-token | Supprimé. |
content-security-policy, strict-transport-security, x-content-type-options | Défini par la plateforme, quoi que vous envoyiez. |
content-length, transfer-encoding, connection | Recalculé. |
Une réponse pouvant exécuter des scripts (text/html, application/xhtml+xml, image/svg+xml, application/xml, text/xml) est servie avec une stratégie de sécurité du contenu de sandboxing. Réponse réelle pour une fonction renvoyant text/html:
Votre HTML est servi, mais sans cookie, stockage ou accès au script à l'origine de votre projet. Utilisez Storage ou votre propre domaine pour héberger une vraie page Web.