当前位置: 首页 > 知识库问答 >
问题:

非弃用替代体解析器在Express.js

颜宸
2023-03-14

我正在阅读Node和Express的Web开发这本书,遇到了一个障碍。

我被指示将下面的内容放在我的应用程序文件中,但它看起来像是body parser已被弃用,无法工作。如何实现相同的功能?

这是我当前的代码

app.use(require('body-parser')());

app.get('/newsletter', function(req, res){

    // we will learn about CSRF later...for now, we just
    // provide a dummy value
    res.render('newsletter', { csrf: 'CSRF token goes here' });
});

app.post('/process', function(req, res){

    console.log('Form (from querystring): ' + req.query.form); 
    console.log('CSRF token (from hidden form field): ' + req.body._csrf); 
    console.log('Name (from visible form field): ' + req.body.name); 
    console.log('Email (from visible form field): ' + req.body.email); res.redirect(303, '/thank-you');
});

共有3个答案

郑乐池
2023-03-14

不要再使用主体解析器了

自Express 4.16以来,主体解析功能已内置于Express中

所以,你可以简单地做

app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads

从直接表达,而不必安装身体解析器。

您现在可以使用npm uninstall body parser

要获取POST数据内容,可以使用req。正文

app.post("/yourpath", (req, res)=>{

    var postData = req.body;

    //Or if body comes as string,

    var postData = JSON.parse(req.body);
});
别峻
2023-03-14

发件人:bodyParser已弃用express 4

这意味着从2014年6月19日起,使用bodyParser()构造函数已被弃用。

app.use(bodyParser()); //Now deprecated

现在需要分别调用这些方法

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

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

等等。

汪鸿波
2023-03-14

只是想更新这个线程,因为我尝试了上面的解决方案,并收到未定义。Express 4.16已经实现了他们自己版本的body解析器,因此您不需要将依赖项添加到您的项目中。你可以在快车上运行它

app.use(express.json()); // Used to parse JSON bodies
app.use(express.urlencoded()); // Parse URL-encoded bodies using query-string library
// or
app.use(express.urlencoded({ extended: true })); // Parse URL-encoded bodies using qs library

来源

查询字符串vs qs

 类似资料:
  • 我试图在我的代码中使用Bodyparser,但代码被编辑器本身剪切,并表示Bodyparser已被弃用。我尝试了一些我在网上找到的替代代码,但都不起作用。附件是我正在使用的代码的截图。密码 代码:

  • 我正在将java应用程序从SpringBoot1.5迁移到SpringBoot2.2.3,这涉及到将Hibernate/Envers升级到5.4.10。最终的 现有代码调用AuditReader#getCurrentRevision(类revisionEntityClass,boolean persist),该类已被弃用,JavaDocs状态为使用RevisionListener,但这与我们需要获

  • 问题内容: 快速提问。JavaScript中的Eval是不安全的吗?我有一个JSON对象作为字符串,我需要将其转换为实际对象,以便获取数据: 如果有帮助,我正在使用jQuery的$ .ajax方法。 谢谢 问题答案: 好吧,不管是否安全,当您使用jQuery时,最好使用$ .getJSON() 方法,而不是$ .ajax(): 当您仅与自己的服务器通信时,通常被认为是安全的JSON解析,尤其是当您

  • 我有一个后api,有对象,但我不能打印在控制台上它的下载未定义我以为我错过了身体解析器,但添加身体解析器后,我看到错误身体解析器弃用身体解析器:使用个人json/urlencoded middlewares将不胜感激。 路线。js 应用程序。js

  • 问题内容: Spring 3.2中不推荐使用JdbcTemplate中的queryforInt / queryforLong方法。我找不到使用这些方法替换现有代码的最佳实践的理由或理由。 典型方法: 确定以上方法需要重新编写如下: 显然,这种弃用使JdbcTemplate类更简单(或者呢?)。QueryForInt一直是一种便捷的方法(我想),并且已经存在了很长时间。为什么将其删除。结果,代码变得