Перейти до основного вмісту

Проміжне ПЗ

Ми плавно підійшли до теми проміжного ПЗ. Насправді проміжне ПЗ - просто функція, що приймає три аргументи: об'єкт запиту (req), об'єкт відповіді (res) і функцію next. Проміжне ПЗ виконується способом, названим конвеєрною обробкою. Уявіть собі водопровідну трубу, якою тече вода. Вода закачується через один кінець труби і проходить через манометри та клапани, наше проміжне ПЗ, перш ніж потрапляє за призначенням - в нашу склянку. Важливий момент цієї аналогії у тому, що черговість має ключове значення.

Вбудуємо власне проміжне ПЗ у наш файл app.js перед викликом статики.

app.use((req, res, next) => {
console.log('Наше проміжне ПЗ');
next();
});

Ця функція нічого не виконує, просто пропускає потік через себе, але в консоль завжди буде вискакувати наше повідомлення.

Мал. 5 - спрацювання проміжного ПЗ
Визначення

Функції проміжної обробки (middleware) - це функції, що мають доступ до об'єкту запиту (req), об'єкту відповіді (res) і до наступної функції проміжної обробки в циклі "запит-відповідь" програми. Наступна функція проміжної обробки, як правило, позначається змінною next.

Функції проміжної обробки виконують наступні завдання:

  • виконують певний код.
  • вносять зміни до об'єктів запитів та відповідей.
  • можуть завершити цикл "запит-відповідь" та перервати обробку запиту.
  • викликають наступну функцію проміжної обробки зі стеку, виконанням функції next().
Важливо!

Якщо поточна функція проміжної обробки не завершує цикл "запит-відповідь", вона повинна викликати next() передачі управління наступної функції проміжної обробки. Інакше запит зависне.