Express.js Framework
What is Express.js?
Express.js is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. It’s the most popular Node.js framework.
Basic Setup
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});Routing
// GET request
app.get('/users', (req, res) => {
res.json({ users: [] });
});
// POST request
app.post('/users', (req, res) => {
res.status(201).json({ message: 'User created' });
});
// PUT request
app.put('/users/:id', (req, res) => {
res.json({ message: `User ${req.params.id} updated` });
});
// DELETE request
app.delete('/users/:id', (req, res) => {
res.json({ message: `User ${req.params.id} deleted` });
});
// Route parameters
app.get('/users/:id', (req, res) => {
const userId = req.params.id;
res.json({ userId });
});
// Query parameters
app.get('/search', (req, res) => {
const { q, page } = req.query;
res.json({ query: q, page });
});Middleware
// Application-level middleware
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
// Built-in middleware
app.use(express.json()); // Parse JSON bodies
app.use(express.urlencoded({ extended: true })); // Parse URL-encoded bodies
app.use(express.static('public')); // Serve static files
// Third-party middleware
const cors = require('cors');
app.use(cors());
const morgan = require('morgan');
app.use(morgan('dev'));Request and Response
app.get('/api/data', (req, res) => {
// Request properties
console.log(req.method); // GET
console.log(req.url); // /api/data
console.log(req.headers);
console.log(req.body);
console.log(req.params);
console.log(req.query);
// Response methods
res.send('Text response');
res.json({ data: 'value' });
res.status(404).send('Not found');
res.redirect('/other-page');
res.download('file.pdf');
res.sendFile('/path/to/file.html');
});Router
// users.routes.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.json({ users: [] });
});
router.post('/', (req, res) => {
res.status(201).json({ message: 'Created' });
});
module.exports = router;
// app.js
const userRoutes = require('./routes/users.routes');
app.use('/api/users', userRoutes);Error Handling
// Error handling middleware
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: err.message });
});
// Async error handling
app.get('/async', async (req, res, next) => {
try {
const data = await fetchData();
res.json(data);
} catch (err) {
next(err);
}
});Template Engines
// EJS
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index', { title: 'Home' });
});
// Pug
app.set('view engine', 'pug');
app.get('/', (req, res) => {
res.render('index', { title: 'Home' });
});Complete Example
const express = require('express');
const app = express();
// Middleware
app.use(express.json());
app.use(express.static('public'));
// Routes
app.get('/', (req, res) => {
res.send('Home Page');
});
app.get('/api/users', (req, res) => {
res.json([
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' }
]);
});
app.post('/api/users', (req, res) => {
const user = req.body;
res.status(201).json(user);
});
// Error handling
app.use((err, req, res, next) => {
res.status(500).json({ error: err.message });
});
// Start server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});Interview Tips
- Explain Express purpose: Web framework for Node.js
- Show routing: Different HTTP methods
- Demonstrate middleware: Request/response processing
- Discuss error handling: Error middleware
- Mention features: Routing, middleware, templating
Summary
Express.js is a minimal Node.js web framework providing routing, middleware, and HTTP utilities. Use app.get/post/put/delete for routes, app.use for middleware, and error handling middleware for errors. Popular for building REST APIs and web applications.
Test Your Knowledge
Take a quick quiz to test your understanding of this topic.