Mukautetun Express-middlewaren kehittäminen
Kirjoitatte omia Express-middleware-funktioita toiminnallisuuden laajentamiseen ja pyyntöjen käsittelyn sujuvoittamiseen.
Mukautetun Express-middlewaren kehittäminen on ilmainen Node.js-taustakehityksen bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Node.js-taustakehityksen bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä mukautettu middleware on?
Express.js:ssä middleware-funktiot ovat kuin apulaisten ketju, joka käsittelee saapuvat pyynnöt ennen niiden päätymistä lopulliselle reitinkäsittelijälle.
- Niillä on käytettävissään pyyntö- (
req) ja vastausobjektit (res). - Ne voivat muokata näitä objekteja, päättää pyyntö–vastausketjun tai siirtää hallinnan seuraavalle middlewarelle.
- Mukautetun middlewaren avulla sovellukseen voi lisätä sen tarpeisiin mukautettuja toimintoja, kuten lokituksen, todennuksen tai tietojen jäsentämisen.
Middlewaren allekirjoitus
Jokainen Express-middleware-funktio noudattaa tiettyä allekirjoitusta: (req, res, next).
req(request): Saapuva HTTP-pyyntöobjekti.res(response): HTTP-vastausobjekti, jonka Express lähettää takaisin.next: Funktio, joka kutsuttaessa siirtää hallinnan pinon seuraavalle middleware-funktiolle. Jos ette kutsunext()-funktiota, pyyntö–vastausketju pysähtyy, eikä muita middleware-funktioita tai reitinkäsittelijöitä suoriteta.
Ensimmäinen logger-middleware
Luodaan yksinkertainen mukautettu middleware, joka kirjaa jokaisen saapuvan pyynnön tiedot konsoliin. Tämä auttaa virheenkorjauksessa ja valvonnassa.
Suorittakaa koodi ja avatkaa sitten selaimessa osoite http://localhost:3000. Tarkistakaa konsolin tuloste!
const express = require('express');
const app = express();
const port = 3000;
// Custom logging middleware
const requestLogger = (req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // Pass control to the next middleware/route handler
};
// Apply the custom middleware globally
app.use(requestLogger);
// Define a simple route
app.get('/', (req, res) => {
res.send('Hello from Express!');
});
// Start the server
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});Middlewaren käyttöönotto: yleinen vai reittikohtainen
Middlewareä voidaan käyttää eri tasoilla:
- Yleisesti (sovellustasolla):
app.use(middlewareFunction)ottaa middlewaren käyttöön KAIKISSA saapuvissa pyynnöissä. - Reittikohtaisesti: Middlewaren voi ottaa käyttöön tietyillä reiteillä tai reittiryhmissä välittämällä sen argumenttina ennen reitinkäsittelijää.
Tämä joustavuus mahdollistaa logiikan suorittamisen vain siellä, missä sitä tarvitaan.
Tietojen välittäminen eteenpäin
Middleware-ohjelmistokomponentin tehokas ominaisuus on sen kyky lisätä ominaisuuksia req-objektiin. Nämä ominaisuudet ovat sen jälkeen kaikkien pyyntö–vastausketjun myöhempien middleware-funktioiden ja lopullisen reitinkäsittelijän käytettävissä.
Tämä on erittäin hyödyllistä esimerkiksi käyttäjätietojen liittämiseen todennuksen jälkeen tai jäsenneltyjen tietojen lisäämiseen ennen päälogiikan suorittamista.
Esimerkki: käyttäjätietojen liittäminen
Seuraavassa liitetään pyyntöön käyttäjäobjekti testitietona. Oikeassa sovelluksessa nämä tiedot tulisivat tietokannasta tai puretusta JSON Web Token (JWT) -tunnisteesta.
Huomaatte, että /profile-reitin käsittelijä voi käyttää suoraan req.user-ominaisuutta, koska attachUserInfo-middleware suoritettiin ensin.
const express = require('express');
const app = express();
const port = 3000;
// Middleware to attach user info (mock data)
const attachUserInfo = (req, res, next) => {
req.user = { id: '123', name: 'Alice', role: 'admin' };
console.log('User info attached to request.');
next();
};
// Apply the middleware globally
app.use(attachUserInfo);
// Route that uses the attached user info
app.get('/profile', (req, res) => {
res.send(`Welcome, ${req.user.name}! Your role is: ${req.user.role}`);
});
app.get('/', (req, res) => {
res.send('Home page (no user info explicitly needed here)');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});Middleware-ketjujen rakentaminen
Voitte ketjuttaa useita middleware-funktioita. Express suorittaa ne siinä järjestyksessä, jossa ne on määritelty. Jokaisen middlewaren on kutsuttava next()-funktiota siirtääkseen hallinnan seuraavalle funktiolle.
- Näin voitte jakaa monimutkaisen pyyntöjen käsittelyn pienempiin, hallittaviin ja uudelleenkäytettäviin funktioihin.
- Voitte esimerkiksi käyttää ensin todennukseen, sitten lokitukseen ja lopuksi jäsentämiseen tarkoitettua middlewarea ennen lopullista reitinkäsittelijää.
Ehdollinen middlewaren suoritus
Joskus haluatte suorittaa middlewaren vain tiettyjen ehtojen täyttyessä. Voitte tehdä tämän seuraavilla tavoilla:
- Reittikohtainen käyttö: Kuten edellä, käyttämällä middlewarea suoraan kutsuissa
app.get(),app.post()ja niin edelleen. - Sisäinen logiikka: Lisäämällä ehdollisia tarkistuksia (
if-lauseita) middlewareen. - Mukautetut käärefunktiot: Luomalla funktion, joka palauttaa parametreihin perustuvan middlewaren.
Käytännössä: pyyntöjen ajastinmiddleware
Rakennetaan middleware, joka mittaa, kuinka kauan pyynnön käsittely ja vastauksen lähettäminen kestävät. Tämä on erittäin hyödyllistä suorituskyvyn seurannassa.
Tässä esimerkissä käytetään res.on('finish', ...)-kutsua suorittamaan koodia sen JÄLKEEN, kun vastaus on lähetetty asiakkaalle.
const express = require('express');
const app = express();
const port = 3000;
// Middleware to measure request duration
const requestTimer = (req, res, next) => {
const start = Date.now(); // Record start time
res.on('finish', () => { // Listen for the response 'finish' event
const end = Date.now(); // Record end time
const duration = end - start;
console.log(`${req.method} ${req.originalUrl} took ${duration}ms`);
});
next(); // Pass control
};
// Apply the timer middleware
app.use(requestTimer);
// Define a route that simulates some work
app.get('/slow', (req, res) => {
setTimeout(() => {
res.send('This was a slow response!');
}, 500); // Simulate 500ms delay
});
app.get('/', (req, res) => {
res.send('Hello, fast world!');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});Middleware-funktiokysely
Tarkastelkaa mukautettua middleware-funktiota, joka on määritelty seuraavasti: const myMiddleware = (req, res, next) => { /* ... */ };
Mikä seuraavista väitteistä sen toiminnasta on TOTTA?
Kertaus: mukautettu middleware
Olette oppineet luomaan ja käyttämään mukautettua Express-middlewarea!
- Mukautettujen middleware-funktioiden allekirjoitus on
(req, res, next). - Kutsun
next()tekeminen on tärkeää, jotta hallinta voidaan siirtää seuraavalle middlewarelle tai reitinkäsittelijälle. - Middleware voi muokata
req- jares-objekteja, jolloin tiedot ovat myöhempien käsittelyvaiheiden käytettävissä. - Voitte käyttää middlewarea maailmanlaajuisesti komennolla
app.use()tai tietyissä reiteissä. - Middleware on tehokas tapa lisätä uudelleenkäytettävää logiikkaa, kuten lokitusta, todennusta tai pyyntöjen ajoituksen mittaamista.
Mukautetun middlewaren hallitseminen on tärkeää modulaaristen ja tehokkaiden Express-sovellusten rakentamisessa.
Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 22
- Oppitunnit
- 92
Usein kysytyt kysymykset
Onko oppitunti ”Mukautetun Express-middlewaren kehittäminen” ilmainen?
Kyllä – oppitunnin ”Mukautetun Express-middlewaren kehittäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Node.js-taustakehityksen bootcamp-kurssin, päivitä CoddyKit PROhon. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Mukautetun Express-middlewaren kehittäminen”?
Kirjoitatte omia Express-middleware-funktioita toiminnallisuuden laajentamiseen ja pyyntöjen käsittelyn sujuvoittamiseen. Harjoittelet Node.js-taustakehityksen bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Node.js-taustakehityksen bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Node.js-taustakehityksen bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Mukautetun Express-middlewaren kehittäminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Node.js-taustakehityksen bootcamp-oppitunnilla?
Kyllä. Jokainen Node.js-taustakehityksen bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Mukautetun Express-middlewaren kehittäminen
- Keskitetyn virheenkäsittelyn strategiat
- Syötteiden validointi Joi- ja Express-Validator-kirjastoilla
- JWT-todennusmiddleware