【问题标题】:How to work body parser and express session NodeJs Middleware functions如何使用正文解析器和表达会话 NodeJs 中间件功能
【发布时间】:2016-10-26 16:57:01
【问题描述】:

我已经开始研究 MEANJS 技术。我一直不清楚body-parse和express-session的一些功能。我也浏览了他们的官方网站,但还不清楚。这些功能是:-

bodyParser.urlencoded({ 扩展:真 });

bodyParser.json()

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

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

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    中间件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:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-22
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多