Úvod do Middleware in Express.js
Middleware in Express.js je výkonný koncept, který vám umožňuje spouštět funkce v určitém pořadí během životního cyklu požadavek-odpověď. Tyto funkce mohou provádět různé úkoly, jako je ověřování, protokolování, ověřování dat a další. Middleware funkce jsou prováděny postupně a každá middleware má přístup k objektům request
a response
a také next
funkci, která předává řízení dalšímu middleware v zásobníku.
Proč používat Middleware ?
Middleware je zásadní pro modularizaci funkčnosti vaší aplikace a zlepšení její udržovatelnosti. Umožňuje vám udržovat obslužné jednotky tras čisté a zaměřené na konkrétní úkoly a zároveň přenášet běžné nebo průřezové záležitosti na middleware funkce. Toto oddělení zájmů podporuje opětovnou použitelnost kódu a dělá vaši kódovou základnu organizovanější.
Vytváření a používání Middleware
Chcete-li vytvořit middleware v Express.js, definujete funkci, která má tři parametry: request
, response
a next
.
Zde je základní příklad middleware protokolování každého příchozího požadavku:
const logMiddleware =(req, res, next) => {
console.log(`Received a ${req.method} request at ${req.url}`);
next(); // Pass control to the next middleware
};
app.use(logMiddleware);
Metodu můžete použít app.use()
globálně middleware na všechny trasy nebo ji můžete použít selektivně pro konkrétní trasy.
Pořadí Middleware provedení
Middleware funkce se provádějí v pořadí, v jakém jsou definovány pomocí app.use()
.
Například:
app.use(middleware1);
app.use(middleware2);
V tomto případě middleware1
bude provedeno dříve middleware2
pro všechny příchozí požadavky.
Zpracování chyb v Middleware
Pokud ve funkci dojde k chybě middleware, můžete ji předat funkci next
a Express.js automaticky přeskočí na zpracování chyb middleware.
Zde je příklad:
const errorMiddleware =(err, req, res, next) => {
console.error(err);
res.status(500).send('Something went wrong!');
};
app.use(errorMiddleware);
Použití Middleware pro ověření
Middleware se běžně používá pro implementaci autentizace a autorizace ve webových aplikacích. Můžete například vytvořit middleware funkci, která před povolením přístupu k určitým trasám zkontroluje, zda je uživatel ověřen:
const authenticateMiddleware =(req, res, next) => {
if(req.isAuthenticated()) {
return next(); // User is authenticated, proceed to the next middleware
}
res.redirect('/login'); // User is not authenticated, redirect to login page
};
app.get('/profile', authenticateMiddleware,(req, res) => {
res.send('Welcome to your profile!');
});
Závěr
Middleware in Express.js je zásadní nástroj pro správu a vylepšování funkčnosti vašich webových aplikací. Vytvořením opakovaně použitelných middleware funkcí můžete zefektivnit svůj kód, modularizovat problémy a zlepšit celkovou udržovatelnost vašich projektů. Od zpracování autentizace po protokolování a správu chyb middleware vám umožňuje efektivně vytvářet robustní a bezpečné webové aplikace.