Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Oman Middleware-komponentin Luominen | Verkkosovellusten Kehittäminen Express.js:llä
Backend-kehitys Node.js:llä ja Express.js:llä

bookOman Middleware-komponentin Luominen

Express.js:ssä voidaan luoda omia middleware-funktioita käyttämällä app.use()-metodia. Nämä funktiot ottavat kolme parametria: req (pyyntöobjekti), res (vastausobjekti) ja next (funktio, jolla siirretään ohjaus seuraavalle middlewarelle ketjussa). Oma middleware voidaan ottaa käyttöön joko kaikille reiteille globaalisti tai tietyille reiteille määrittelemällä reittipolku.

Oman middleware-funktion luominen

Seuraavassa on yksinkertainen esimerkki omasta middleware-funktiosta, joka kirjaa jokaisen saapuvan pyynnön aikaleiman ja URL-osoitteen:

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

Tässä esimerkissä oma middleware kirjaa jokaisen saapuvan pyynnön aikaleiman ja URL-osoitteen konsoliin. next()-funktiota kutsutaan, jotta ohjaus siirtyy seuraavalle middlewarelle käsittelyketjussa.

Käytännön esimerkki: Sisäänrakennetun ja oman middleware-toiminnon yhdistäminen

Tässä on käytännön esimerkki, jossa käytetään Expressin sisäänrakennettua middleware-toimintoa JSON-datan jäsentämiseen ja luodaan oma middleware-toiminto datan validointiin ennen jatkokäsittelyä:

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

Tässä esimerkissä:

  • Käytetään sisäänrakennettua middleware-toimintoa express.json() saapuvan JSON-datan jäsentämiseen;
  • Luodaan oma middleware, joka tarkistaa, puuttuuko jäsennetty JSON-data tai onko se tyhjä. Jos näin on, palautetaan 400 Bad Request -vastaus ja virheilmoitus. Jos data on validia, kutsutaan next() ja siirrytään reittiin;
  • /api/data-reitti odottaa validia JSON-dataa. Jos oma middleware validoi datan, reittikäsittelijä vastaanottaa sen ja palauttaa onnistumisvastauksen.

Tämä esimerkki havainnollistaa, kuinka sekä sisäänrakennettuja että omia middleware-toimintoja voidaan käyttää datan validointiin ennen kuin se saavuttaa reittikäsittelijät, varmistaen että data on oikeassa muodossa ennen jatkokäsittelyä.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 9

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Can you explain how to apply middleware to specific routes only?

What are some other use cases for custom middleware in Express.js?

How does the order of middleware affect request handling in Express.js?

Awesome!

Completion rate improved to 2.56

bookOman Middleware-komponentin Luominen

Pyyhkäise näyttääksesi valikon

Express.js:ssä voidaan luoda omia middleware-funktioita käyttämällä app.use()-metodia. Nämä funktiot ottavat kolme parametria: req (pyyntöobjekti), res (vastausobjekti) ja next (funktio, jolla siirretään ohjaus seuraavalle middlewarelle ketjussa). Oma middleware voidaan ottaa käyttöön joko kaikille reiteille globaalisti tai tietyille reiteille määrittelemällä reittipolku.

Oman middleware-funktion luominen

Seuraavassa on yksinkertainen esimerkki omasta middleware-funktiosta, joka kirjaa jokaisen saapuvan pyynnön aikaleiman ja URL-osoitteen:

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

Tässä esimerkissä oma middleware kirjaa jokaisen saapuvan pyynnön aikaleiman ja URL-osoitteen konsoliin. next()-funktiota kutsutaan, jotta ohjaus siirtyy seuraavalle middlewarelle käsittelyketjussa.

Käytännön esimerkki: Sisäänrakennetun ja oman middleware-toiminnon yhdistäminen

Tässä on käytännön esimerkki, jossa käytetään Expressin sisäänrakennettua middleware-toimintoa JSON-datan jäsentämiseen ja luodaan oma middleware-toiminto datan validointiin ennen jatkokäsittelyä:

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

Tässä esimerkissä:

  • Käytetään sisäänrakennettua middleware-toimintoa express.json() saapuvan JSON-datan jäsentämiseen;
  • Luodaan oma middleware, joka tarkistaa, puuttuuko jäsennetty JSON-data tai onko se tyhjä. Jos näin on, palautetaan 400 Bad Request -vastaus ja virheilmoitus. Jos data on validia, kutsutaan next() ja siirrytään reittiin;
  • /api/data-reitti odottaa validia JSON-dataa. Jos oma middleware validoi datan, reittikäsittelijä vastaanottaa sen ja palauttaa onnistumisvastauksen.

Tämä esimerkki havainnollistaa, kuinka sekä sisäänrakennettuja että omia middleware-toimintoja voidaan käyttää datan validointiin ennen kuin se saavuttaa reittikäsittelijät, varmistaen että data on oikeassa muodossa ennen jatkokäsittelyä.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 9
some-alt