Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Oprettelse af Brugerdefineret Middleware | Udvikling af Webapplikationer med Express.js
Backend-Udvikling med Node.js og Express.js

bookOprettelse af Brugerdefineret Middleware

Stryg for at vise menuen

I Express.js kan vi oprette brugerdefinerede middleware-funktioner ved hjælp af app.use()-metoden. Disse funktioner tager tre parametre: req (anmodningsobjektet), res (svarobjektet) og next (en funktion til at overføre kontrollen til den næste middleware i kæden). Brugerdefineret middleware kan anvendes globalt på alle ruter eller på specifikke ruter ved at angive en rutevej.

Oprettelse af brugerdefineret middleware

Her er et grundlæggende eksempel på en brugerdefineret middleware-funktion, der logger tidsstemplet og URL'en for hver indkommende anmodning:

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

I dette eksempel logger den brugerdefinerede middleware tidsstemplet og URL'en for hver indkommende anmodning til konsollen. Funktionen next() kaldes for at overføre kontrollen til den næste middleware i rækken.

Virkelighedsnært eksempel: Kombinering af indbygget og brugerdefineret middleware

Her er et praktisk eksempel, hvor vi bruger en indbygget Express-middleware til at parse JSON-data og derefter opretter en brugerdefineret middleware til at validere disse data, før vi fortsætter:

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.');
});

I dette eksempel:

  • Vi bruger den indbyggede middleware express.json() til at parse indkommende JSON-data;
  • Vi opretter en brugerdefineret middleware, der kontrollerer, om de parset JSON-data mangler eller er tomme. Hvis det er tilfældet, sendes et 400 Bad Request-svar med en fejlbesked. Hvis dataene er gyldige, kaldes next() for at fortsætte til ruten;
  • Ruten /api/data forventer gyldige JSON-data. Hvis den brugerdefinerede middleware validerer dataene, modtager rutehandleren dem og sender et succes-svar.

Dette eksempel demonstrerer, hvordan vi kan bruge både indbygget og brugerdefineret middleware til at validere data, før de når vores route handlers, hvilket sikrer, at dataene er i det forventede format, inden de behandles yderligere.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 9

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 9
some-alt