Express.js na Node HTTP

Minder boilerplate, sneller bouwen, zelfde HTTP-principes

Waarom Express?

  • Je schrijft minder if/else route-code.
  • JSON body parsen is ingebouwd met express.json().
  • Statische files serveren is 1 regel: express.static().
  • Routes en middleware maken grote projecten overzichtelijker.
Je hebt de moeilijke versie al gedaan met http. Daardoor snap je nu beter wat Express voor jou automatiseert.

Waarom low-level kennis toch belangrijk blijft

  • Express verbergt details, maar HTTP blijft hetzelfde.
  • Debuggen lukt beter als je req.method, headers, statuscodes en body-flow begrijpt.
  • Veiligheid blijft jouw taak: validatie, auth, foutafhandeling.
Kennis van "onder de motorkap" = je bent niet afhankelijk van magie.

Van http naar Express: hetzelfde gedrag, minder code


// Node http (les 9/10 stijl)
if (req.method === "GET" && req.url === "/messages") {
  getAllMessages(res)
} else if (req.method === "POST" && req.url === "/messages") {
  // body chunks lezen + JSON.parse + validatie
} else {
  res.statusCode = 404
  res.end("404")
}

// Express
app.get("/messages", (req, res) => {
  getAllMessages(res)
})

app.post("/messages", (req, res) => {
  // req.body bestaat al dankzij express.json()
})
  

Setup (nieuw project of upgrade van login/chat)


mkdir express-auth-app && cd express-auth-app
npm init -y
npm install express sqlite3
mkdir public
# maak server.mjs en public/index.html
  
In package.json: "type": "module" toevoegen als je import gebruikt.

Express basisserver (copy/paste)


import express from "express"

const app = express()
const PORT = 3000

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

app.get("/ping", (req, res) => {
  res.json({ ok: true, boodschap: "pong" })
})

app.listen(PORT, () => {
  console.log(`Server op http://localhost:${PORT}`)
})
    

Met deze 2 regels win je meteen tijd: express.json() en express.static().