Express.js
Beginner
1 min read
Streaming Responses and res.locals
Example
const express = require('express');
const fs = require('fs');
const path = require('path');
const app = express();
// Attach user to res.locals in middleware
app.use((req, res, next) => {
res.locals.user = { id: 1, role: 'admin' }; // from JWT in real app
next();
});
// Read res.locals in route handler
app.get('/me', (req, res) => {
res.json(res.locals.user);
});
// Stream a large file (memory-efficient)
app.get('/stream/log', (req, res) => {
res.setHeader('Content-Type', 'text/plain');
const stream = fs.createReadStream(path.join(__dirname, 'app.log'));
stream.on('error', () => res.status(404).end());
stream.pipe(res); // pipe readable → writable (response)
});
// Content negotiation with res.format()
app.get('/data', (req, res) => {
const data = { id: 1, name: 'Widget' };
res.format({
'application/json': () => res.json(data),
'text/html': () => res.send(`<p>${data.name}</p>`),
default: () => res.status(406).send('Not Acceptable'),
});
});
app.listen(3000);
Related Resources
Express.js Reference
Complete tag & property list
Express.js How-To Guides
Step-by-step practical guides
Express.js Exercises
Practice what you've learned
More in Express.js