Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Aangepaste Middleware Maken | Webapplicaties Ontwikkelen met Express.js
Backendontwikkeling met Node.js en Express.js

bookAangepaste Middleware Maken

In Express.js kunnen we aangepaste middleware-functies maken met behulp van de methode app.use(). Deze functies nemen drie parameters: req (het request-object), res (het response-object) en next (een functie om de controle door te geven aan de volgende middleware in de keten). Aangepaste middleware kan globaal op alle routes worden toegepast of op specifieke routes door een routepad op te geven.

Aangepaste Middleware Maken

Hier is een eenvoudig voorbeeld van een aangepaste middleware-functie die de timestamp en URL van elk binnenkomend verzoek logt:

app.use((req, res, next) => {
  const timestamp = new Date().toISOString();
  const url = req.url;
  
  console.log(`[${timestamp}] ${url}`);
  
  next(); // Pass control to the next middleware.
});

In dit voorbeeld logt de aangepaste middleware de timestamp en URL van elk binnenkomend verzoek naar de console. De functie next() wordt aangeroepen om de controle door te geven aan de volgende middleware in de pipeline.

Praktijkvoorbeeld: Gecombineerd Gebruik van Ingebouwde en Aangepaste Middleware

Hier is een praktisch voorbeeld waarbij we een ingebouwde Express-middleware gebruiken om JSON-data te parsen en vervolgens een aangepaste middleware maken om die data te valideren voordat we verder gaan:

const express = require('express');
const app = express();

// Use built-in middleware to parse JSON data.
app.use(express.json());

// Custom middleware to validate JSON data.
app.use((req, res, next) => {
  const jsonData = req.body;

  if (!jsonData || Object.keys(jsonData).length === 0) {
    // If the JSON data is missing or empty, send an error response.
    return res.status(400).json({ error: 'Invalid JSON data' });
  }

  // Data is valid; proceed to the next middleware or route.
  next();
});

// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
  const jsonData = req.body;
  res.status(200).json({ message: 'Data received', data: jsonData });
});

app.listen(3000, () => {
  console.log('Server is running on port 3000.');
});

In dit voorbeeld:

  • We gebruiken de ingebouwde middleware express.json() om binnenkomende JSON-data te parsen;
  • We maken een aangepaste middleware die controleert of de geparste JSON-data ontbreekt of leeg is. Als dat het geval is, wordt een 400 Bad Request-respons met een foutmelding verzonden. Als de data geldig is, wordt next() aangeroepen om door te gaan naar de route;
  • De route /api/data verwacht geldige JSON-data. Als de aangepaste middleware de data valideert, ontvangt de route handler deze en stuurt een succesrespons.

Dit voorbeeld toont aan hoe zowel ingebouwde als aangepaste middleware gebruikt kan worden om gegevens te valideren voordat deze onze routehandlers bereiken, zodat de gegevens het verwachte formaat hebben voordat ze verder worden verwerkt.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 9

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

bookAangepaste Middleware Maken

Veeg om het menu te tonen

In Express.js kunnen we aangepaste middleware-functies maken met behulp van de methode app.use(). Deze functies nemen drie parameters: req (het request-object), res (het response-object) en next (een functie om de controle door te geven aan de volgende middleware in de keten). Aangepaste middleware kan globaal op alle routes worden toegepast of op specifieke routes door een routepad op te geven.

Aangepaste Middleware Maken

Hier is een eenvoudig voorbeeld van een aangepaste middleware-functie die de timestamp en URL van elk binnenkomend verzoek logt:

app.use((req, res, next) => {
  const timestamp = new Date().toISOString();
  const url = req.url;
  
  console.log(`[${timestamp}] ${url}`);
  
  next(); // Pass control to the next middleware.
});

In dit voorbeeld logt de aangepaste middleware de timestamp en URL van elk binnenkomend verzoek naar de console. De functie next() wordt aangeroepen om de controle door te geven aan de volgende middleware in de pipeline.

Praktijkvoorbeeld: Gecombineerd Gebruik van Ingebouwde en Aangepaste Middleware

Hier is een praktisch voorbeeld waarbij we een ingebouwde Express-middleware gebruiken om JSON-data te parsen en vervolgens een aangepaste middleware maken om die data te valideren voordat we verder gaan:

const express = require('express');
const app = express();

// Use built-in middleware to parse JSON data.
app.use(express.json());

// Custom middleware to validate JSON data.
app.use((req, res, next) => {
  const jsonData = req.body;

  if (!jsonData || Object.keys(jsonData).length === 0) {
    // If the JSON data is missing or empty, send an error response.
    return res.status(400).json({ error: 'Invalid JSON data' });
  }

  // Data is valid; proceed to the next middleware or route.
  next();
});

// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
  const jsonData = req.body;
  res.status(200).json({ message: 'Data received', data: jsonData });
});

app.listen(3000, () => {
  console.log('Server is running on port 3000.');
});

In dit voorbeeld:

  • We gebruiken de ingebouwde middleware express.json() om binnenkomende JSON-data te parsen;
  • We maken een aangepaste middleware die controleert of de geparste JSON-data ontbreekt of leeg is. Als dat het geval is, wordt een 400 Bad Request-respons met een foutmelding verzonden. Als de data geldig is, wordt next() aangeroepen om door te gaan naar de route;
  • De route /api/data verwacht geldige JSON-data. Als de aangepaste middleware de data valideert, ontvangt de route handler deze en stuurt een succesrespons.

Dit voorbeeld toont aan hoe zowel ingebouwde als aangepaste middleware gebruikt kan worden om gegevens te valideren voordat deze onze routehandlers bereiken, zodat de gegevens het verwachte formaat hebben voordat ze verder worden verwerkt.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 9
some-alt