Built-in Middleware
Express ships with express.json, express.urlencoded and express.static.
Syntax
app.use(express.json())Express includes a few essential middleware functions out of the box:
express.json()— parses incoming JSON request bodies intoreq.body.express.urlencoded()— parses HTML form submissions intoreq.body.express.static()— serves static files such as images, CSS and client-side JavaScript.
Without a body parser, req.body is undefined, so add these early.
Example
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static('public'));
app.post('/echo', (req, res) => {
res.json({ youSent: req.body });
});When to use it
- A developer uses express.json() to automatically parse incoming JSON request bodies from a mobile client posting user data.
- A contact form at /contact submits application/x-www-form-urlencoded data which express.urlencoded() parses into req.body.
- A web app serves CSS, images and JS files from a public/ folder using express.static() without writing any route handlers.
More examples
express.json() for API bodies
Registers express.json() globally so POST /users can destructure name and email from req.body.
const express = require('express');
const app = express();
app.use(express.json());
app.post('/users', (req, res) => {
const { name, email } = req.body;
res.status(201).json({ name, email });
});
app.listen(3000);express.urlencoded() for HTML forms
Parses HTML form submissions sent as application/x-www-form-urlencoded and makes them available on req.body.
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: false }));
app.post('/contact', (req, res) => {
const { name, message } = req.body;
res.send(`Received message from ${name}`);
});
app.listen(3000);express.static() for assets
Mounts the public/ folder as a static file server so index.html, styles.css, and scripts.js are served automatically.
const express = require('express');
const path = require('path');
const app = express();
// Serve files from the public/ directory at the root URL
app.use(express.static(path.join(__dirname, 'public')));
// API routes after static middleware
app.get('/api/data', (req, res) => res.json({ ok: true }));
app.listen(3000);
Discussion