Lesson 1 of 8 ~15 min
Course progress
0%

Express Fundamentals

Introduction to Express.js framework and creating your first server.

Express Fundamentals

Express.js is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.

Why Express?

  • Minimal and unopinionated: Freedom to structure your application
  • Robust routing: Powerful routing mechanism
  • Middleware: Extensive middleware ecosystem
  • Performance: Built on Node.js for fast I/O operations

Installation

npm install express

Your First Express Server

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
  res.send('Hello, Express!');
});

app.listen(PORT, () => {
  console.log(`Server running on http://localhost:${PORT}`);
});

Request Flow in Express

graph LR
    A[Client Request] --> B[Express App]
    B --> C[Middleware 1]
    C --> D[Middleware 2]
    D --> E[Route Handler]
    E --> F[Response]
    F --> G[Client]

Routing

Basic Routes

// GET request
app.get('/users', (req, res) => {
  res.json([{ id: 1, name: 'John' }]);
});

// POST request
app.post('/users', (req, res) => {
  res.status(201).json({ message: 'User created' });
});

// PUT request
app.put('/users/:id', (req, res) => {
  const { id } = req.params;
  res.json({ message: `User ${id} updated` });
});

// DELETE request
app.delete('/users/:id', (req, res) => {
  res.status(204).send();
});

Route Parameters

// URL parameters
app.get('/users/:id', (req, res) => {
  const userId = req.params.id;
  res.json({ id: userId });
});

// Query parameters
app.get('/search', (req, res) => {
  const { q, limit } = req.query;
  res.json({ query: q, limit: limit || 10 });
});

Middleware

Middleware functions have access to request and response objects.

// Application-level middleware
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

// Built-in middleware
app.use(express.json()); // Parse JSON bodies
app.use(express.static('public')); // Serve static files

// Custom middleware
const validateUser = (req, res, next) => {
  if (!req.body.name) {
    return res.status(400).json({ error: 'Name required' });
  }
  next();
};

app.post('/users', validateUser, (req, res) => {
  res.json({ message: 'User created', name: req.body.name });
});

Response Methods

app.get('/examples', (req, res) => {
  // Send JSON
  res.json({ key: 'value' });
  
  // Send text
  res.send('Hello');
  
  // Set status
  res.status(404).json({ error: 'Not found' });
  
  // Redirect
  res.redirect('/new-url');
  
  // Download file
  res.download('/path/to/file.pdf');
});

What is the purpose of middleware in Express?

To store data
To process requests before route handlers
To compile JavaScript
To manage databases

Which method is used to parse JSON request bodies?

express.json()
express.parse()
express.body()
express.urlencoded()

How do you access URL parameters in Express?

req.query
req.body
req.params
req.url