Логотип Аурабаза
аурабазадокументы
документы›Edge Functions›Text, binary and HTML responses

Возвращаемый текст, двоичный файл и HTML

Как отправлять текст, изображения, файлы или HTML из функции и читать их обратно с помощью SDK или простого HTTP.

6 мин читать·Уровень средний·Пересмотрено 12 окт. 2026 г.
Этот текст на английском языке был создан автоматически на основе французского оригинала и еще не проверялся.
Эта страница была переведена автоматически. Английская версия является авторитетной.
#
Решение

1. Выберите тип ответа

Ваша функция возвращаетИспользуйте responseTypedata — это
JSON'json' (по умолчанию)проанализированное значение
Обычный текст, CSV, HTML'text' (или 'json', который также возвращает строку)string
Изображение, PDF, любые байты'blob' или 'arrayBuffer'Blob или ArrayBuffer

Режим 'json' по умолчанию может передавать JSON и текст. Он не может переносить байты: если функция отвечает с двоичным типом содержимого, SDK возвращает ошибку invalid_response и предлагает вам выбрать 'blob' или 'arrayBuffer', поэтому ничего не теряется молча.

#
SDK

2. Прочтите его с помощью 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' } })
  }
  // 8-байтовая подпись PNG, достаточная для отображения байтов в обоих направлениях.
  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,имя\n1,Ада\n"

const img = await aura.functions.invoke<Blob>('export', { responseType: 'blob' })
console.log(img.data?.type, img.data?.size) // "изображение/png" 8

При реальном запуске функции, возвращающей байты 137,80,78,71,13,10,26,10,255,0,1, arrayBuffer вернула именно эти 11 байт, а blob вернула type=image/png size=11.

При использовании 'text', 'blob' или 'arrayBuffer' SDK пропускает конверт JSON и возвращает тело вашей функции в том виде, в котором оно есть. Если ваша функция отвечает со статусом ошибки, error.status — это статус, а error.message — это текст, возвращенный вашей функцией.

#
HTTP

3. Режим Raw через HTTP

Добавьте заголовок X-Aurabase-Invoke-Mode: raw, и платформа вернет собственный ответ вашей функции: ее статус, content-type и байты.

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

Без этого заголовка ответ всегда будет 200 с конвертом:

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

В конверте body — это проанализированный JSON, текст вашего ответа, если он имеет формат UTF-8, а не JSON, или null, если тело ответа пустое или двоичное.

В необработанном режиме каждый ответ вашей функции содержит x-aurabase-invoke-origin: function. Ответ без него приходит от шлюза или среды выполнения. Вот как SDK сообщает 503, возвращенный вашим кодом, о сбое платформы.

#
Заголовки

4. Какие заголовки выживают

В необработанном режиме заголовки ответов фильтруются, поскольку они подаются из собственного источника платформы.

ЗаголовокРезультат
content-typeСохранено. По умолчанию используется application/octet-stream, если вы не установили ничего.
Пользовательские заголовки (x-custom-out, cache-control, …)Сохранено.
set-cookieУдаленный. Функция не может устанавливать файлы cookie.
access-control-*Удаленный. CORS определяется шлюзом.
x-aura-*, x-internal-tokenУдаленный.
content-security-policy, strict-transport-security, x-content-type-optionsУстанавливается платформой, что бы вы ни отправляли.
content-length, transfer-encoding, connectionПересчитано.

Ответ, который может запускать сценарии (text/html, application/xhtml+xml, image/svg+xml, application/xml, text/xml), обслуживается с помощью политики безопасности содержимого изолированной программной среды. Реальный ответ для функции, возвращающей text/html:

заголовки ответовtext
content-type: text/html
content-security-policy: default-src 'none'; frame-ancestors 'none'; sandbox
x-content-type-options: nosniff

Ваш HTML-код обслуживается, но без доступа к файлам cookie, хранилищу или сценарию к источнику вашего проекта. Используйте хранилище или собственный домен для размещения настоящей веб-страницы.

Последнее обновление · 12 окт. 2026 г.