Express.js Basics & Routing

🌿 Node.js Lesson 9 Intermediate

Express.js is the most popular Node.js web framework. It simplifies routing, middleware management, and HTTP request handling with a minimal, unopinionated API.

1 Setting Up Express
Terminal — Install Express
npm install express
npm install --save-dev nodemon
JavaScript — Basic Express App
const express = require('express');
const app = express();

// Parse JSON request bodies
app.use(express.json());

// Basic GET route
app.get('/', (req, res) => {
  res.json({ message: 'Welcome to the API!', version: '1.0' });
});

// Route with URL parameter
app.get('/users/:id', (req, res) => {
  const { id } = req.params;
  res.json({ userId: id, name: 'Balaji Nayak' });
});

// Route with query parameters: /search?q=node&limit=10
app.get('/search', (req, res) => {
  const { q, limit = 20 } = req.query;
  res.json({ query: q, maxResults: Number(limit) });
});

// POST route
app.post('/users', (req, res) => {
  const { name, email } = req.body;
  res.status(201).json({ id: Date.now(), name, email });
});

app.listen(3000, () => console.log('Express running on port 3000'));
2 Express Router (Modular Routes)
JavaScript — routes/users.js
const express = require('express');
const router  = express.Router();

// All routes here are prefixed with /users (set in app.js)
router.get('/',     (req, res) => res.json({ users: [] }));
router.get('/:id',  (req, res) => res.json({ id: req.params.id }));
router.post('/',    (req, res) => res.status(201).json(req.body));
router.put('/:id',  (req, res) => res.json({ updated: req.params.id }));
router.delete('/:id', (req, res) => res.json({ deleted: req.params.id }));

module.exports = router;
JavaScript — app.js (mounting routes)
const express = require('express');
const usersRouter = require('./routes/users');

const app = express();
app.use(express.json());

// Mount the router at /users prefix
app.use('/users', usersRouter);

app.listen(3000);
3 Code Challenge
Challenge: Create an Express router for a /products resource with full CRUD routes. Store products in a JavaScript array (in-memory) and implement proper HTTP status codes for each operation.