Створення Власного Проміжного Програмного Забезпечення
У Express.js можна створювати власні функції проміжного програмного забезпечення (middleware) за допомогою методу app.use(). Такі функції приймають три параметри: req (об'єкт запиту), res (об'єкт відповіді) та next (функція для передачі керування наступному проміжному програмному забезпеченню в ланцюжку). Власне middleware можна застосовувати глобально до всіх маршрутів або до окремих маршрутів, вказавши шлях маршруту.
Створення власного middleware
Ось базовий приклад функції власного middleware, яка фіксує мітку часу та URL кожного вхідного запиту:
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.
});
У цьому прикладі власне middleware виводить у консоль мітку часу та URL кожного вхідного запиту. Викликається функція next(), щоб передати керування наступному middleware у конвеєрі.
Приклад з реального світу: поєднання вбудованого та власного middleware
Ось практичний приклад, де використовується вбудований middleware Express для розбору JSON-даних, а потім створюється власний middleware для валідації цих даних перед подальшою обробкою:
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.');
});
У цьому прикладі:
- Використовується вбудований middleware
express.json()для розбору вхідних JSON-даних; - Створюється власний middleware, який перевіряє, чи розібрані JSON-дані відсутні або порожні. Якщо так, повертається відповідь 400 Bad Request з повідомленням про помилку. Якщо дані валідні, викликається
next()для переходу до маршруту; - Маршрут
/api/dataочікує валідні JSON-дані. Якщо власний middleware валідує дані, обробник маршруту їх отримує та повертає відповідь про успішне отримання.
Цей приклад демонструє, як можна використовувати як вбудовані, так і власні middleware для валідації даних перед тим, як вони потраплять до обробників маршрутів, забезпечуючи відповідність даних очікуваному формату перед подальшою обробкою.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Створення Власного Проміжного Програмного Забезпечення
Свайпніть щоб показати меню
У Express.js можна створювати власні функції проміжного програмного забезпечення (middleware) за допомогою методу app.use(). Такі функції приймають три параметри: req (об'єкт запиту), res (об'єкт відповіді) та next (функція для передачі керування наступному проміжному програмному забезпеченню в ланцюжку). Власне middleware можна застосовувати глобально до всіх маршрутів або до окремих маршрутів, вказавши шлях маршруту.
Створення власного middleware
Ось базовий приклад функції власного middleware, яка фіксує мітку часу та URL кожного вхідного запиту:
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.
});
У цьому прикладі власне middleware виводить у консоль мітку часу та URL кожного вхідного запиту. Викликається функція next(), щоб передати керування наступному middleware у конвеєрі.
Приклад з реального світу: поєднання вбудованого та власного middleware
Ось практичний приклад, де використовується вбудований middleware Express для розбору JSON-даних, а потім створюється власний middleware для валідації цих даних перед подальшою обробкою:
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.');
});
У цьому прикладі:
- Використовується вбудований middleware
express.json()для розбору вхідних JSON-даних; - Створюється власний middleware, який перевіряє, чи розібрані JSON-дані відсутні або порожні. Якщо так, повертається відповідь 400 Bad Request з повідомленням про помилку. Якщо дані валідні, викликається
next()для переходу до маршруту; - Маршрут
/api/dataочікує валідні JSON-дані. Якщо власний middleware валідує дані, обробник маршруту їх отримує та повертає відповідь про успішне отримання.
Цей приклад демонструє, як можна використовувати як вбудовані, так і власні middleware для валідації даних перед тим, як вони потраплять до обробників маршрутів, забезпечуючи відповідність даних очікуваному формату перед подальшою обробкою.
Дякуємо за ваш відгук!