Wprowadzenie do Middleware w Express.js
Middleware in Express.js to potężna koncepcja, która umożliwia wykonywanie funkcji w określonej kolejności podczas cyklu życia żądanie-odpowiedź. Te funkcje mogą wykonywać różne zadania, takie jak uwierzytelnianie, rejestrowanie, sprawdzanie poprawności danych i inne. Middleware Funkcje są wykonywane sekwencyjnie, a każda z nich middleware ma dostęp do obiektów request
i response
, jak również do next
funkcji, która przekazuje kontrolę do następnej middleware na stosie.
Dlaczego używać Middleware ?
Middleware jest niezbędny do modularyzacji funkcjonalności aplikacji i zwiększenia jej łatwości konserwacji. Pozwala utrzymać procedury obsługi tras w czystości i skupić się na określonych zadaniach, jednocześnie przenosząc typowe lub przekrojowe problemy na middleware funkcje. To oddzielenie problemów sprzyja ponownemu użyciu kodu i sprawia, że baza kodu jest lepiej zorganizowana.
Tworzenie i używanie Middleware
Aby utworzyć middleware w Express.js, zdefiniuj funkcję, która przyjmuje trzy parametry: request
, response
, i next
.
Oto podstawowy przykład middleware rejestrowania każdego przychodzącego żądania:
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);
Możesz użyć tej app.use()
metody, aby zastosować ją middleware globalnie do wszystkich tras lub użyć jej wybiórczo dla określonych tras.
Nakaz Middleware wykonania
Middleware funkcje są wykonywane w kolejności, w jakiej zostały zdefiniowane przy użyciu app.use()
.
Na przykład:
app.use(middleware1);
app.use(middleware2);
W takim przypadku middleware1
zostanie wykonany wcześniej middleware2
dla wszystkich żądań przychodzących.
Obsługa błędów w Middleware
Jeśli w funkcji wystąpi błąd middleware, możesz przekazać błąd do next
funkcji, a Express.js nastąpi automatyczne przejście do obsługi błędów middleware.
Oto przykład:
const errorMiddleware =(err, req, res, next) => {
console.error(err);
res.status(500).send('Something went wrong!');
};
app.use(errorMiddleware);
Używanie Middleware do uwierzytelniania
Middleware jest powszechnie używany do implementacji uwierzytelniania i autoryzacji w aplikacjach internetowych. Na przykład możesz utworzyć middleware funkcję, która sprawdza, czy użytkownik jest uwierzytelniony przed zezwoleniem na dostęp do określonych tras:
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!');
});
Wniosek
Middleware in Express.js jest niezbędnym narzędziem do zarządzania aplikacjami internetowymi i zwiększania ich funkcjonalności. Tworząc middleware funkcje wielokrotnego użytku, możesz usprawnić swój kod, modularyzować problemy i poprawić ogólną łatwość konserwacji swoich projektów. Od obsługi uwierzytelniania po rejestrowanie i zarządzanie błędami — middleware umożliwia wydajne tworzenie solidnych i bezpiecznych aplikacji internetowych.