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

I Express.js kan der oprettes 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 rute-sti.

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 fejlmeddelelse. 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 route-handleren 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-handlere, hvilket sikrer, at dataene har 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

Awesome!

Completion rate improved to 2.56

bookOprettelse af Brugerdefineret Middleware

Stryg for at vise menuen

I Express.js kan der oprettes 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 rute-sti.

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 fejlmeddelelse. 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 route-handleren 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-handlere, hvilket sikrer, at dataene har det forventede format, inden de behandles yderligere.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 9
some-alt