提问者:小点点

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


我正在阅读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个答案

匿名用户

只是想更新这个线程,因为我尝试了上面的解决方案,并收到未定义。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已弃用express 4

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

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

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

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

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

等等。

匿名用户

不要再使用主体解析器了

自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);
});