Intermediate LevelExpress JS
What is the difference between res.writeHead() and res.setHeader() in Express response formatting?
❓ Interview Prompt: Compare res.setHeader() buffered header assignment vs res.writeHead() immediate socket header flushing.
Both methods modify HTTP response headers, but differ in when headers are flushed to the TCP socket:
1. 'res.setHeader(name, value)':
•
Sets headers in a buffered state. Headers are not written to the socket until 'res.send()', 'res.json()', or response streaming begins. Allows overwriting headers later in middleware execution.
2. 'res.writeHead(status, [headers])':
•
Immediately writes status code and headers directly to the TCP socket. Once 'res.writeHead()' is called, headers are locked and cannot be modified!
Code Implementation Example
javascript
import express from 'express';
const app = express();
app.get('/api/header-demo', (req, res) => {
// 1. res.setHeader buffers header value
res.setHeader('X-Buffered-Header', 'Value1');
// 2. res.writeHead flushes status code and all headers directly to TCP socket!
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'Flushed' }));
});💡Comparing buffered res.setHeader vs immediate socket write with res.writeHead.
🎯 Interview Key Takeaway
res.setHeader() buffers headers allowing later edits; res.writeHead() immediately flushes status and headers to the TCP socket.
#res.setHeader#res.writeHead#Headers#Intermediate
Back to all Express JS Questions→