Используем Middlewares в Express | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Используем Middlewares в Express

Node_Deep_10.3-5020-7af064.png

Express представляет собой мощный и расширяемый фреймворк для приложений Node.js, и некоторые вещи в нём можно делать абсолютно прозрачно для логики приложения. Одна из таких возможностей — middleware.

Middlewares — это промежуточный слой приложения, который вызывается между приёмом запроса Express-ом и вашим обработчиком запроса.

Допустим, у нас есть следующие API:

    const express = require('express');

    const app = express();

    app.get('/person', (req, res) => res.send({name: 'Ivan'}));

    app.listen(3000);

Пусть это будет нашей бизнес-логикой. Будем добавлять новый функционал, используя только middleware.

Допустим, мы хотим залогировать текущее время запроса. Это можно легко сделать:

    const express = require('express');

    const app = express();

    app.use((req, res, next) => {
        console.log(new Date().toISOString());
        next();
    });

    app.get('/person', (req, res) => res.send({name: 'Ivan'}));

    app.listen(3000);

Обратите внимание, на методы use — в данный метод мы можем передать callback специального вида. Функция next необходима для передачи управления следующему middleware или, в нашем случае, — обработчику запросов.

Давайте, добавим HTTP Basic-аутентификацию для всех методов. Как и полагается аутентификации, данный middleware нужно поместить перед всеми обработчиками и другими middleware:

    app.use((req, res, next) => {
        // user:password
        if (req.header('Authorization') !== 'Basic dXNlcjpwYXNzd29yZA==') {
            res.header('WWW-Authenticate', 'Basic');
            res.sendStatus(401);
        } else {
            next()
        }
    });

Обратите внимание, что добавление функционала происходит абсолютно прозрачно для бизнес-логики.

Существует множество стандартных middleware:

  • body-parser — позволяет распарсить тело запроса из JSON в объект. А также рашифровать URL-Encoded параметры запроса;
  • cookie-parser — позволяет просто работать с Cookies;
  • serve-static — позволяет отдавать Express статический веб-контент;
  • и многие многие другие.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!