QA
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→

More Express JS Interview Questions

Beginner LevelExpress JS

What is Express.js and how does the middleware pipeline work?

Beginner LevelExpress JS

What is the difference between req.params, req.query, and req.body?

Beginner LevelExpress JS

How does express.Router() work for building modular route controllers?