Проміжне ПЗ middleware

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

Вбудуємо власний middleware у наш файл index.js перед виконанням запитів.

const express = require("express");

const app = express();

app.use((req, res, next) => {
  const time = new Date().toLocaleString('uk-UA');
  req.time = time;

  console.log('Дата:', time);
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log("Server is up and runned on port 3000");
});

Після кожного запиту і перед виконанням коду обробки буде виконуватися цей middleware. Функція у прикладі нічого корисного не виконує, просто пропускає потік через себе, але в консоль завжди виводить повідомлення про дату.

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

Тобто можна, наприклад, на цьому етапі певні дані записати в якусь змінну обʼєкту req і вони будуть доступні в наступних обробниках після middleware.

Основні завдання функцій проміжної обнобки:

  • виконання певного коду

  • внесення змін до об'єктів запитів (req) та відповідей (res).

  • припинення циклу "запит-відповідь" та переривання обробки запиту.

  • виклик наступної функції проміжної обробки зі стеку (next()).

Після завершення виконання свого коду middleware повинна викликати next(). Після цього управління передається наступній функції. Якщо цього не зробити то код програми зависне.

Кроссдоменний доступ на сервер

Може статися, якщо спробувати отримати доступ на наш API сервер доступ з стороннього ресурку, то не буде надано доступу.

Виправити цю ситуацію можна за допомогою пакета cors.

terminal
npm i cors

Підключивши cors middleware:

index.js
const cors = require("cors");

app.use(cors());

Так за замовчанням будуть проходити усі запити, але можна кастомно налаштувати визначивши обʼєкт налаштувань.

Last updated