
วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: เข้าสู่การเรียนรู้
วันนี้เมื่อฉันเรียนรู้ Node ฉันพบ ว่า setHeader และ writeHead ใน Node/http ทั้งคู่สามารถตั้งค่าส่วนหัวการตอบกลับได้ เรามาดูรายละเอียดกัน
พารามิเตอร์
response.setHeader(name, value)คัดลอกรหัส
http.ServerResponse ส่งคืนออบเจ็กต์การตอบสนองและ
ตั้งค่าแอตทริบิวต์เดียวสำหรับส่วนหัวการตอบสนอง
โปรดทราบว่า
ชื่อ
ฟิลด์คุณสมบัติ
TypeError ที่ถูกโยนทิ้ง'text/html'
setHeader('Set-Cookie', ['type=ninja', ' language=javascript']) ตั้งค่าแอตทริบิวต์ซ้ำๆ
// ส่งคืน content-type = text/html1
response.setHeader('ประเภทเนื้อหา', 'ข้อความ/html')
response.setHeader('ประเภทเนื้อหา', 'ข้อความ/html1') 
พารามิเตอร์
response.writeHead(statusCode, [statusMessage], [headers])
statusCode http รหัสสถานะ
statusMessage ข้อความสถานะ (ตัวเลือก)
ส่วนหัว | วัตถุแอตทริบิวต์หรืออาร์เรย์ (ตัวเลือก)
ส่งคืน http.ServerResponse วัตถุตอบกลับ

ฟังก์ชันนี้
เหมือนกับ setHeader
โปรดทราบ
ว่าสามารถตั้งค่าคุณสมบัติได้หลายรายการเท่านั้น
สามารถ
เรียกได้เพียงครั้งเดียวเท่านั้น
โดยจะต้องถูกเรียกก่อน response.end()
อักขระจะทำให้ TypeError ถูกส่งออกไป
ตัวอย่าง
เนื่องจาก writeHead ส่งคืน มันเป็นวัตถุ ServerResponse เราจึงสามารถทำการเรียกลูกโซ่ได้
const body = 'hello world';
การตอบสนอง
.writeHead(200, {
'ความยาวเนื้อหา': Buffer.byteLength(body)
'ประเภทเนื้อหา': 'ข้อความ/ธรรมดา'
-
.end(body); Content-Length ที่นี่เป็นไบต์ ไม่ใช่อักขระ Buffer.byteLength() ใช้เพื่อกำหนดความยาวของข้อความ
Nodejs จะไม่ตรวจสอบว่า Content-Length สอดคล้องกับความยาวของข้อความที่ส่งหรือ
// 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 สามารถตั้งค่า
setHeaders ได้หลายรายการพร้อมกัน และสามารถเรียกซ้ำได้เพียงครั้งเดียว และ
setHeader และ writeHead จะปรากฏขึ้นพร้อมกัน writeHead มีลำดับความสำคัญสูง
writeHead สามารถตั้งค่ารหัสสถานะและข้อมูลสถานะได้ setHeader ไม่สามารถตั้งค่าได้เฉพาะส่วนหัวเท่านั้นที่สามารถตั้งค่าได้