Coding practice
Express.js Coding Questions
12 hands-on challenges with prompts and solution sketches for Express.js interview rounds.
Challenge set
12 coding questions
1. Hello Route
javascriptCreate a GET /health route.
app.get("/health", (req, res) => {
res.json({ ok: true });
}); 2. JSON Body Parser
javascriptEnable JSON body parsing.
import express from "express";
const app = express();
app.use(express.json()); 3. Route Param
javascriptRead an id from params.
app.get("/users/:id", (req, res) => {
res.json({ id: req.params.id });
}); 4. Query Filter
javascriptFilter with a query string.
app.get("/posts", (req, res) => {
const page = Number(req.query.page ?? 1);
res.json({ page });
}); 5. Error Middleware
javascriptAdd a centralized error handler.
app.use((err, req, res, next) => {
console.error(err);
res.status(500).json({ message: "Server error" });
}); 6. Router Module
javascriptMount a router under /api.
import { Router } from "express";
const api = Router();
api.get("/ping", (req, res) => res.send("pong"));
app.use("/api", api); 7. Auth Middleware
javascriptRequire an Authorization header.
function requireAuth(req, res, next) {
if (!req.headers.authorization) {
return res.status(401).json({ message: "Unauthorized" });
}
next();
} 8. Async Handler
javascriptWrap async routes to catch errors.
const asyncHandler = (fn) => (req, res, next) =>
Promise.resolve(fn(req, res, next)).catch(next); 9. CORS Setup
javascriptEnable CORS for an API.
import cors from "cors";
app.use(cors({ origin: "https://www.phpkingdom.com" })); 10. Static Files
javascriptServe a public folder.
app.use(express.static("public")); 11. Status Codes
javascriptReturn 201 on create.
app.post("/users", (req, res) => {
res.status(201).json(req.body);
}); 12. Request Validation
javascriptValidate required fields.
app.post("/login", (req, res) => {
const { email, password } = req.body ?? {};
if (!email || !password) {
return res.status(400).json({ message: "Missing fields" });
}
res.json({ email });
});