如何使用正文解析器和表达会话NodeJs中间件函数

时间:2016-06-24 06:46:35

标签: node.js express

我已经开始研究MEANJS技术了。我一直不清楚身体解析和快速会话的一些功能。我也通过他们的官方网站,但仍然不清楚。这些功能是: -

  

bodyParser.urlencoded({       extended:true});

     

bodyParser.json()

     

expressSession({resave:true,saveUninitialized:true,})

在某些地方,它会bodyParser.urlencoded({ extended: false })expressSession({ resave: false, saveUninitialized: false, })。现在使用这些boolean时,请使用示例进行说明。所以它会更清楚。

1 个答案:

答案 0 :(得分:5)

中间件body-parser

通常,此中间件将解析传入的HTTP请求的主体并填充req.body属性,该属性随后可用于您的路由和中间件。

body-parser为不同类型的请求主体提供了不同的解析器。如果您写下以下内容:

var express = require('express');
var bodyParser = require('body-parser');

var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

第一个app.use()将包含JSON正文解析器,第二个将包含URL编码的表单正文解析器。您需要的解析器取决于您的服务器必须处理的请求类型。关于extended: falseextended: true的区别已在this answer中解释。

中间件express-session

此中间件提供了一种在快捷应用中处理会话和会话数据的简便方法。两个配置属性resavesaveUninitialized会影响express-session存储用户会话数据的方式。

示例:假设有新用户访问您的网站。 express-session检测到此用户还没有会话,因此它将创建一个仅包含会话ID且没有数据的新会话。如果设置saveUninitialized: true,则此会话将存储在会话存储中,而不包含任何实际会话数据。 saveUninitialized: false会在实际包含某些值时立即存储会话。 (简单地说)

示例:现在假设具有现有会话的用户正在访问您的网站。请求了一些资源,但用户的会话数据没有变化。 resave: true无论如何都会保存未更改的数据,而resave: false则不会。

摘要:设置app.use(expressSession({resave: false, saveUninitialized: false}));将减少访问会话存储的次数,这对硬件资源和性能有益。因此,在大多数情况下,您需要将它们设置为false