شعار أوراباسي
aurabaseمستندات
مستندات›Edge Functions›Text, binary and HTML responses

إرجاع النص والثنائي وHTML

كيفية إرسال نص أو صور أو ملفات أو HTML من إحدى الوظائف وقراءتها مرة أخرى باستخدام SDK أو HTTP العادي.

6 د قراءة·المستوى وسيطة·تمت المراجعة في 12‏/10‏/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' } })
  }
  // توقيع PNG بحجم 8 بايت، يكفي لإظهار البايتات ذهابًا وإيابًا
  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) // "المعرف،الاسم\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. الوضع الخام عبر 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تمت الإزالة. لا يمكن للوظيفة تعيين ملفات تعريف الارتباط.
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 الخاص بك، ولكن بدون الوصول إلى ملفات تعريف الارتباط أو التخزين أو البرنامج النصي إلى أصل مشروعك. استخدم التخزين أو المجال الخاص بك لاستضافة صفحة ويب حقيقية.