Lesson 17 +10 XP

Request & Response Objects (req & res)

Deep Dive into req and res

Express passes enhanced Request (req) and Response (res) wrapper objects to every route handler callback function.

Key Request Properties (req)

  • req.params : Object containing route parameter tokens (e.g., req.params.id).
  • req.query : Object containing URL query string parameters (e.g., ?page=2 -> req.query.page).
  • req.body : Parsed payload body object (requires body-parsing middleware).
  • req.headers : Object containing request headers (e.g., req.headers['authorization']).
  • req.ip : Remote IP address of the client request.

Key Response Methods (res)

  • res.status(code) : Sets the HTTP status code (chainable).
  • res.json(payload) : Sends a JSON response with correct Content-Type: application/json header.
  • res.send(body) : Sends string, Buffer, or HTML response.
  • res.redirect(url) : Redirects client to specified URL.
  • res.sendFile(absolutePath) : Streams static file directly to response.
app.get("/search", (req, res) => {
  const { q, limit = 10 } = req.query;
  const userAgent = req.get("User-Agent");

  if (!q) {
    return res.status(400).json({ error: "Query parameter 'q' is required" });
  }

  res.status(200).json({
    query: q,
    limit: Number(limit),
    clientAgent: userAgent
  });
});

TL;DR

  • Access input data via req.params (path), req.query (search params), and req.body (payload).
  • Respond to clients using res.status(code).json(data).