1. Introduction to Express.js
What is Express.js?
Express.js is a minimal and flexible Node.js web application framework that provides simple tools for building robust web servers and APIs quickly. It simplifies the hard work of handling network requests.
Real-Life Analogy: The Automated Post Office
Think of Express as a highly automated post office that processes and routes incoming mail (HTTP Requests):
- The Request: This is the message asking for a resource (like a webpage or data). It has an address (the URL path) and a method (GET, POST, etc.).
- Middleware (The Sorting Scanners): These are mandatory steps applied to every piece of mail. They check for security, log the time of arrival, or open and process the contents.
- Routing (The Address Matcher): This finds the correct pigeonhole or delivery truck based on the address and type of mail.
- The Response: After the request is processed, the post office sends back the final package or confirmation message to the sender.
2. Setting Up Express
Definition
The core of any Express application is the app
instance, which acts as the central object for defining all server behavior, routes, and middleware.
// server.js
const express = require('express');
const app = express();
const port = 3000;
// The basic GET route: handles requests to the root '/'
app.get('/', (req, res) => {
res.send('Server Running...');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
3. Interactive Routing, Middleware, & Data Flow
Explore the three fundamental Express concepts in this simulated IDE. Select a tab, set the inputs, and click RUN Request to see the immediate Browser Output and Console Log.
4. Serving Static Files (Pre-built Content)
The Code
The express.static()
middleware is typically placed at the top of your file to serve public assets like images, CSS, and client-side JavaScript.
app.use(express.static('public')); // ... any remaining routes ... app.get('/about', (req, res) => { res.send('This is the custom About page.'); });
Simulate Request Flow
5. Sending Responses (The Final Delivery)
The Response Object (res
) is used to construct and deliver the final answer, implicitly ending the request cycle.
Choose Response Type:
6. Error Handling (404 Not Found)
The 404 handler is placed LAST in your routing chain to catch requests that fall through all other routes.
The 404 Handler Code
// This middleware must be placed LAST in your file. app.use((req, res) => { res.status(404).send('Sorry, the page you requested was not found!'); });
Simulate a Broken Link
7. Route Parameters & Query Strings
These methods allow a single route to handle dynamic data passed in the URL.
The Code
app.get('/books/:id', (req, res) => { const { id } = req.params; const { filter } = req.query; // If URL is /books/45?filter=new res.json({ id, filter, message: "Data extracted successfully." }); });
Simulate Extraction
req.params
and req.query
8. JSON & Status Codes
Proper API design requires using the correct HTTP status code (e.g., 201 for creation) and returning structured JSON data.
The res.status().json()
Chain
// Simulating a POST request saving a new resource. app.post('/new-resource', (req, res) => { res.status(201).json({ success: true, id: 'res-101', status_code: 201 }); });
Simulate API Response
9. Conclusion / Summary
Express.js is a fast, minimalist, and flexible web framework built on top of Node.js.
It simplifies server-side programming by providing powerful features such as routing, middleware, and API handling — all in a clean and organized way.
Through this presentation, we saw how even a few lines of Express code can create a fully functional server that responds to user requests efficiently. Express.js continues to be one of the most popular choices for developers building scalable web applications and RESTful APIs.