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

Используем 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 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто