ExpressJS - промежуточное ПО
Функции промежуточного программного обеспечения - это функции, которые имеют доступ к request object (req), то response object (res)и следующая функция промежуточного программного обеспечения в цикле запроса-ответа приложения. Эти функции используются для измененияreq и res объекты для таких задач, как анализ тела запроса, добавление заголовков ответа и т. д.
Вот простой пример функции промежуточного программного обеспечения в действии -
var express = require('express');
var app = express();
//Simple request time logger
app.use(function(req, res, next){
console.log("A new request received at " + Date.now());
//This function call is very important. It tells that more processing is
//required for the current request and is in the next middleware
function/route handler.
next();
});
app.listen(3000);
Вышеупомянутое промежуточное ПО вызывается для каждого запроса на сервере. Итак, после каждого запроса мы будем получать в консоли следующее сообщение:
A new request received at 1467267512545
Чтобы ограничить его определенным маршрутом (и всеми его подмаршрутами), укажите этот маршрут в качестве первого аргумента app.use(). Например,
var express = require('express');
var app = express();
//Middleware function to log request protocol
app.use('/things', function(req, res, next){
console.log("A request for things received at " + Date.now());
next();
});
// Route handler that sends the response
app.get('/things', function(req, res){
res.send('Things');
});
app.listen(3000);
Теперь всякий раз, когда вы запрашиваете какой-либо подмаршрут "/ things", только тогда он регистрирует время.
Порядок вызовов промежуточного программного обеспечения
Одна из самых важных вещей о промежуточном программном обеспечении в Express - это порядок, в котором они записываются / включаются в ваш файл; порядок, в котором они выполняются, учитывая, что также необходимо учитывать соответствие маршрута.
Например, в следующем фрагменте кода сначала выполняется первая функция, затем обработчик маршрута и затем конечная функция. В этом примере показано, как использовать промежуточное ПО до и после обработчика маршрута; также как обработчик маршрута может использоваться как промежуточное ПО.
var express = require('express');
var app = express();
//First middleware before response is sent
app.use(function(req, res, next){
console.log("Start");
next();
});
//Route handler
app.get('/', function(req, res, next){
res.send("Middle");
next();
});
app.use('/', function(req, res){
console.log('End');
});
app.listen(3000);
Когда мы посещаем '/' после запуска этого кода, мы получаем ответ как Middle а на нашей консоли -
Start
End
Следующая диаграмма суммирует то, что мы узнали о промежуточном программном обеспечении.
Теперь, когда мы рассмотрели, как создать собственное промежуточное программное обеспечение, давайте обсудим некоторые из наиболее часто используемых промежуточных программ, создаваемых сообществом.
Стороннее промежуточное ПО
Список стороннего промежуточного программного обеспечения для Express доступен здесь . Ниже приведены некоторые из наиболее часто используемых промежуточных программ; мы также узнаем, как использовать / монтировать их -
боди-парсер
Это используется для анализа тела запросов, к которым прикреплены полезные данные. Чтобы смонтировать body parser, нам нужно установить его, используяnpm install --save body-parser и для его монтирования включите в свой index.js следующие строки:
var bodyParser = require('body-parser');
//To parse URL encoded data
app.use(bodyParser.urlencoded({ extended: false }))
//To parse json data
app.use(bodyParser.json())
Чтобы просмотреть все доступные параметры body-parser, посетите его страницу на github.
cookie-парсер
Он анализирует заголовок Cookie и заполняет req.cookies объектом, привязанным к именам файлов cookie. Чтобы смонтировать синтаксический анализатор файлов cookie, нам нужно установить его с помощью npm install --save cookie-parser и, чтобы смонтировать его, включите следующие строки в свой index.js:
var cookieParser = require('cookie-parser');
app.use(cookieParser())
экспресс-сессия
Он создает промежуточное ПО сеанса с заданными параметрами. Мы обсудим его использование в разделе «Сессии».
В ExpressJS есть много другого промежуточного программного обеспечения сторонних производителей. Однако мы обсудили здесь только несколько важных.