كيف تبدأ بسرعة مع VUE3.0: أدخل التعلم
اليوم، عندما كنت أتعلم Node
وجدت أن setHeader و writeHead في Node/http
متشابهان جدًا.
معلمات
Response.setHeader(name, value)نسخ رمز
http.ServerResponse
يُرجع كائن الاستجابةويعين
سمة واحدة لرأس الاستجابة.
لاحظ أنه
الخاصيةأو القيم التي تحتوي على أحرف
غير
TypeError
.'text/html')
Response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript'])
يعين السمة بشكل متكرر
// يُرجع content-type = text/html1 Response.setHeader("نوع المحتوى"، "نص/html") Response.setHeader("نوع المحتوى"، "نص/html1")
معلمة
Response.writeHead(statusCode, [statusMessage], [headers])
رمز حالة http
رمز حالة الرسالة (اختياري)
رؤوس كائن السمة أو المصفوفة (اختياري)
تُرجع كائن استجابة http.ServerResponse
الدالة
هي نفس وظيفة setHeader
لاحظ
أنه يمكن تعيين خصائص متعددة. يمكن تعيين setHeader
مرة واحدة فقط، ويجب استدعاؤها
response.end()
تعيين اسم حقل الخاصية أو القيمة التي تحتوي على غير صالحة ستؤدي الأحرف إلى ظهور خطأ TypeError
،
على سبيل المثال،
لأن writeHead يُرجع إنه كائن ServerResponse، يمكننا إجراء مكالمات متسلسلة
const body = 'hello World'; إجابة .وريتهيد (200، { "طول المحتوى": Buffer.byteLength(body), "نوع المحتوى": "نص/عادي" }) .end(body);
Content-Length هنا بالبايت، وليس بالأحرف. يتم استخدام Buffer.byteLength() لتحديد طول النص.
لن تتحقق Nodejs مما إذا كان طول المحتوى متوافقًا مع طول النص المرسل.
// Return content-type = text/plain خادم const = http.createServer((req, res) => { res.setHeader('نوع المحتوى', 'نص/html'); res.setHeader('X-Foo', 'bar'); res.writeHead(200, { 'نوع المحتوى': 'نص/عادي' }); res.end('موافق'); });
writeHead
له أولوية أعلى من setHeader
، ولا يمكن استدعاء writeHead إلا مرة واحدة، لذلك عند الاتصال، فكر أولاً في الرؤوس التي لا تتغير كثيرًا، ثم اتصل writeHead
إذا تم استدعاء setHeader
لتعيين الرأس، فسوف يفعل ذلك قم بتمريرها إلى writeHead
merge
إذا تم استدعاء هذه الطريقة ولم يتم استدعاء response.setHeader()
، فستتم كتابة قيمة الرأس المقدمة مباشرة إلى قناة الشبكة ولن يتم تخزينها مؤقتًا داخليًا. response.getHeader()
) الموجود في الرأس لا ينتج النتائج المتوقعة. إذا كانت هناك حاجة إلى ملء الرأس بشكل متزايد ومن المحتمل استرداده وتعديله في المستقبل، فاستخدم response.setHeader()
بدلاً من ذلك.
يمكن لـ setHeader تعيين الرؤوس واحدًا تلو الآخر فقط، ويمكن لـ writeHead تعيين العديد
من الرؤوس في وقت واحد، ويمكن استدعاؤها بشكل متكرر. لا يمكن استدعاء writeHead إلا مرة واحدة، وسيظهر
setHeader وwriteHead في نفس الوقت لدى writeHead أولوية عالية.
يمكن لـ writeHead تعيين رموز الحالة ومعلومات الحالة، ولا يمكن تعيين setHeader، ويمكن تعيين الرأس فقط