Skip to content

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

javascript

Create a GET /health route.

app.get("/health", (req, res) => {
  res.json({ ok: true });
});

2. JSON Body Parser

javascript

Enable JSON body parsing.

import express from "express";
const app = express();
app.use(express.json());

3. Route Param

javascript

Read an id from params.

app.get("/users/:id", (req, res) => {
  res.json({ id: req.params.id });
});

4. Query Filter

javascript

Filter with a query string.

app.get("/posts", (req, res) => {
  const page = Number(req.query.page ?? 1);
  res.json({ page });
});

5. Error Middleware

javascript

Add a centralized error handler.

app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).json({ message: "Server error" });
});

6. Router Module

javascript

Mount 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

javascript

Require an Authorization header.

function requireAuth(req, res, next) {
  if (!req.headers.authorization) {
    return res.status(401).json({ message: "Unauthorized" });
  }
  next();
}

8. Async Handler

javascript

Wrap async routes to catch errors.

const asyncHandler = (fn) => (req, res, next) =>
  Promise.resolve(fn(req, res, next)).catch(next);

9. CORS Setup

javascript

Enable CORS for an API.

import cors from "cors";
app.use(cors({ origin: "https://www.phpkingdom.com" }));

10. Static Files

javascript

Serve a public folder.

app.use(express.static("public"));

11. Status Codes

javascript

Return 201 on create.

app.post("/users", (req, res) => {
  res.status(201).json(req.body);
});

12. Request Validation

javascript

Validate 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 });
});