Express.js Cheat Sheet
Quick reference for Express.js — routing, middleware, request/response, error handling, and REST API patterns. All essential Express patterns in one page.
Setup & Basics
| npm init -y && npm i express | Initialize project and install Express |
| const express = require("express") | Import Express (CommonJS) |
| import express from "express" | Import Express (ESM) |
| const app = express() | Create Express application |
| app.listen(3000, () => console.log("Running")) | Start server on port 3000 |
| app.set("view engine", "ejs") | Set template engine |
| app.use(express.json()) | Parse JSON request bodies |
| app.use(express.urlencoded({ extended: true })) | Parse URL-encoded bodies |
| app.use(express.static("public")) | Serve static files from public/ |
Routing
| app.get("/", (req, res) => res.send("Hello")) | Handle GET request |
| app.post("/users", handler) | Handle POST request |
| app.put("/users/:id", handler) | Handle PUT request |
| app.patch("/users/:id", handler) | Handle PATCH request |
| app.delete("/users/:id", handler) | Handle DELETE request |
| app.all("/api/*", handler) | Match all HTTP methods |
| app.route("/users").get(fn).post(fn) | Chain methods on same route |
| req.params.id | Access route parameter :id |
| req.query.page | Access query string ?page=1 |
| req.body.name | Access request body field |
Middleware
| app.use((req, res, next) => { next() }) | Global middleware |
| app.use("/api", authMiddleware) | Path-scoped middleware |
| app.get("/", mw1, mw2, handler) | Route-level middleware chain |
| const router = express.Router() | Create modular router |
| router.use(authMiddleware) | Router-level middleware |
| app.use("/api/v1", router) | Mount router at prefix |
| app.use(cors()) | Enable CORS (npm i cors) |
| app.use(morgan("dev")) | Request logging (npm i morgan) |
| app.use(helmet()) | Security headers (npm i helmet) |
Response Methods
| res.send("Hello") | Send string response |
| res.json({ ok: true }) | Send JSON response |
| res.status(201).json(data) | Set status code + JSON |
| res.redirect("/login") | Redirect to URL (302) |
| res.redirect(301, "/new-url") | Permanent redirect (301) |
| res.render("index", { title: "Home" }) | Render template with data |
| res.sendFile(path.join(__dirname, "file.pdf")) | Send file download |
| res.cookie("token", value, { httpOnly: true }) | Set cookie |
| res.clearCookie("token") | Clear cookie |
Error Handling
| app.use((err, req, res, next) => { res.status(500).json({error: err.message}) }) | Error middleware (4 args) |
| next(new Error("Not found")) | Pass error to error handler |
| app.use("*", (req, res) => res.status(404).json({error: "Not found"})) | Catch-all 404 handler |
| process.on("unhandledRejection", (err) => { console.error(err) }) | Handle unhandled promise rejections |
Try It Live
Test these patterns with our free API Tester. No signup needed.
Open API Tester →
Step-by-Step Guide
Read Guide →