Я надеюсь, что каждый может продолжать читать мою серию статей. Это также самая большая поддержка и поддержка для меня. Давайте продвигаем прогресс вместе, подружитесь через литературу и поможем друг другу. ОК, давайте перейдем к сегодняшней теме.
Что такое «подключение» и как понять промежуточное программное обеспечение? Давайте посмотрим на сегодняшнюю статью с вопросами.
Как понять «промежуточное программное обеспечение»?
Насколько я понимаю, промежуточное программное обеспечение - это нечто похожее на фильтр, способ обработки запросов и ответов между клиентом и приложением.
Если процесс обработки HTTP сравнивается с очисткой сточных вод, промежуточное программное обеспечение похоже на слои фильтров. Каждое промежуточное программное обеспечение переписывает запрос или (и) данные ответа во время обработки HTTP,
Состояние, реализует конкретные функции.
Что такое "Connect"?
Мы можем думать о Connect как о коллекции кучу промежуточного программного обеспечения. Для каждого запроса Connect будет использовать промежуточный слой для фильтрации запроса, каждый из которых может получить HTTP -запрос.
TJ Holowaychuk сказал о подключении, что существует два типа промежуточного программного обеспечения. Один из них - фильтр:
Фильтры обрабатывают запросы, но они не отвечают на запросы (журналы сервера Think).
Второй тип - это поставщик, который отвечает на запрос. Вы можете использовать несколько промежуточного программного обеспечения в соответствии с вашими потребностями. HTTP -запрос будет отвечать на запрос через каждое промежуточное программное обеспечение до одного из промежуточных программных программ.
2. Введение в встроенное промежуточное программное обеспечение Connect
Ниже приведены несколько основных промежуточных программных программ, и описаны примеры:
(1), cookieParser ---------------------------------------------------------------------------------------------------------------------- Cookie также можно зашифровать с помощью REQ.Secret.
Кода -копия выглядит следующим образом:
var connect = require ('./ lib/connect');
var app = connect ()
.use (connect.cookieParser ('Secret String'))
.USE (function (req, res, Next) {
req.cookies.website = "Привет, я больший!" ;
res.end (json.stringify (req.cookies));
}). Слушайте (8888);
(2), сессия
Описание: Промежуточное программное обеспечение управления сеансом
Зависимость: cookieparser
Параметры: параметры
параметры:
Ключ: Имя файлов cookie, значение по умолчанию - Connect.sid
Магазин: экземпляр хранения сеанса
Секрет: шифрование сессии сессии
cookie: конфигурация cookie сеанса, значение по умолчанию {path: '/', httponly: true, maxage: null}
Прокси: обратный прокси для безопасных файлов cookie, реализованный через X-Forwarded-Proto
Вариант cookie:
cookie.maxage: значение по умолчанию является нулевым, что указывает на то, что cookie удаляется, когда браузер закрыт.
Кода -копия выглядит следующим образом:
var connect = require ('./ lib/connect');
var app = connect ()
.USE (connect.logger ('dev'))
.USE (Connect.cookieParser ())
.use (connect.session ({секрет: '123', cookie: {maxage: 60000}}))
.USE (function (req, res, Next) {
if (req.session.pv) {
res.setheader ('content-type', 'text/html');
res.write («Просмотры: ' + req.session.pv);
res.end ();
req.session.pv ++;
}еще{
req.session.pv = 1;
res.end ('обновить');
}
})
.listen (8888);
Поскольку клиент непрерывно обновляет страницу «PV», и количество обслуживания на сервере «сеанс» будет продолжаться.
(3), bodyParser-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Кода -копия выглядит следующим образом:
var connect = require ('connect');
var app = connect ()
.USE (Connect.BodyParser ())
.USE (function (req, res) {
res.end ('req.body =>' + json.stringify (req.body));
})
.listen (8888);
В -третьих, давайте возьмем пример сравнения и увидим преимущества использования промежуточного программного обеспечения.
Кода -копия выглядит следующим образом:
/*
* Статическая обработка файлов реализована с использованием Connect
*/
var connect = require ('connect');
connect (connect.static (__ dirname + '/public' )).listen(//listen
8888,
function () {
console.log ('подключение запускается на порту 8888');
}
);
/*
* Реализация с использованием Node Native API
*/
var http = require ('http');
http.createserver (
функция (req, res) {
var url = require ('url');
var fs = require ('fs');
var pathname = __dirname + '/public' + url.parse (req.url) .pathname;
// Читать локальные файлы
fs.readfile (
ПАТНА,
function (err, data) {
// Обработка исключений
if (err) {
res.writehead (500);
res.end ('500');
}
еще {
res.end (data);
}
}
);
}
) .listen (// Слушай
8888,
function () {
console.log ('http -сервер запускается на порту 8888');
}
);
Хотя Node Node API уже потратил так много строк кода, он по -прежнему оставляет множество аспектов простого статического файлового сервера, которые не были обработаны.
Например: 404 и другие исключения не обрабатываются, не существует базовой проверки безопасности пути файла (на самом деле, мы можем получить доступ к всей файловой системе ОС), глобальной обработке исключений и т. Д.
В то же время Connect уже решала все эти проблемы.
Четыре, давайте обобфрим
(1) Понять обработку потоковой передачи промежуточного программного обеспечения.
Кода -копия выглядит следующим образом:
var app = connect ();
app.use (connect.staticcache ());
app.use (connect.static (__ dirname + '/public'));
app.use (connect.cookieparser ());
app.use (connect.session ());
app.use (connect.query ());
app.use (connect.bodyparser ());
app.use (connect.csrf ());
app.use (function (req, res, next) {
// промежуточное программное обеспечение
});
app.listen (8888);
(2) Дифференциация между нативными методами реализации и реализациями промежуточного программного обеспечения.
(3) Через приведенные выше примеры промежуточного программного обеспечения мы можем понять сценарии использования и использования и обратиться к соответствующим документам, чтобы освоить основное использование других промежуточных программных программ.