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

Aangepaste Middleware Maken

Veeg om het menu te tonen

In Express.js kunnen we aangepaste middlewarefuncties maken met behulp van de app.use()-methode. 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 middlewarefunctie 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: Combineren 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 doorgaan:

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 verstuurd. Als de data geldig is, wordt next() aangeroepen om door te gaan naar de route;
  • De /api/data-route verwacht geldige JSON-data. Als de aangepaste middleware de data valideert, ontvangt de route handler deze en stuurt een succesrespons terug.
Codebeschrijving
expand arrow
  • Regel 1: importeert het Express.js-framework;

  • Regel 2: maakt een Express-applicatie-instantie aan door express() aan te roepen. Het resulterende app-object wordt gebruikt om routes, middleware en HTTP-verzoeken te definiëren en af te handelen;

  • Regel 5: activeert de ingebouwde express.json()-middleware. Deze middleware parseert automatisch inkomende JSON-verzoeksbodies en maakt de gegevens beschikbaar via req.body;

  • Regels 8-18: definiëren aangepaste middleware die wordt gebruikt om inkomende JSON-gegevens te valideren;

  • controleert of req.body gegevens bevat;

    • retourneert een 400 Bad Request-respons als de request body ontbreekt of leeg is;
    • roept next() aan als de JSON-gegevens geldig zijn en gaat verder naar de volgende middleware of route handler;
  • Regels 21-24: definiëren een POST-route op /api/data;

    • haalt de ingediende JSON-gegevens op uit req.body;
    • retourneert een 200 OK-respons met een bevestigingsbericht en de ontvangen gegevens;
  • Regels 26-28: starten de Express-applicatie en beginnen met luisteren naar verzoeken op poort 3000.

Dit voorbeeld laat zien hoe zowel ingebouwde als aangepaste middleware gebruikt kan worden om gegevens te valideren voordat deze de route handlers 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.

Aangepaste Middleware Maken

In Express.js kunnen we aangepaste middlewarefuncties maken met behulp van de app.use()-methode. 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 middlewarefunctie 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: Combineren 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 doorgaan:

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 verstuurd. Als de data geldig is, wordt next() aangeroepen om door te gaan naar de route;
  • De /api/data-route verwacht geldige JSON-data. Als de aangepaste middleware de data valideert, ontvangt de route handler deze en stuurt een succesrespons terug.
Codebeschrijving
expand arrow
  • Regel 1: importeert het Express.js-framework;

  • Regel 2: maakt een Express-applicatie-instantie aan door express() aan te roepen. Het resulterende app-object wordt gebruikt om routes, middleware en HTTP-verzoeken te definiëren en af te handelen;

  • Regel 5: activeert de ingebouwde express.json()-middleware. Deze middleware parseert automatisch inkomende JSON-verzoeksbodies en maakt de gegevens beschikbaar via req.body;

  • Regels 8-18: definiëren aangepaste middleware die wordt gebruikt om inkomende JSON-gegevens te valideren;

  • controleert of req.body gegevens bevat;

    • retourneert een 400 Bad Request-respons als de request body ontbreekt of leeg is;
    • roept next() aan als de JSON-gegevens geldig zijn en gaat verder naar de volgende middleware of route handler;
  • Regels 21-24: definiëren een POST-route op /api/data;

    • haalt de ingediende JSON-gegevens op uit req.body;
    • retourneert een 200 OK-respons met een bevestigingsbericht en de ontvangen gegevens;
  • Regels 26-28: starten de Express-applicatie en beginnen met luisteren naar verzoeken op poort 3000.

Dit voorbeeld laat zien hoe zowel ingebouwde als aangepaste middleware gebruikt kan worden om gegevens te valideren voordat deze de route handlers 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