Node.js express的内置主体解析器返回意外结果

Node.js express的内置主体解析器返回意外结果,node.js,json,express,middleware,body-parser,Node.js,Json,Express,Middleware,Body Parser,我读了一篇文章,这篇文章让我相信app.use(express.json())是app.use(bodyParser.urlcoded({extended:false}))的一个方便的替代品,因为它将解析请求的主体并将其作为对象返回。但是,出于片段中一些奇怪的原因: app.use(express.json()); app.use('/add-product',(_req, res, _next) => { res.send('<form action="/product

我读了一篇文章,这篇文章让我相信
app.use(express.json())
app.use(bodyParser.urlcoded({extended:false}))
的一个方便的替代品,因为它将解析请求的主体并将其作为对象返回。但是,出于片段中一些奇怪的原因:

app.use(express.json());

app.use('/add-product',(_req, res, _next) => {
res.send('<form action="/product" method="POST" ><input type="text" name="title"><button 
type="submit">Add Product</button>');
});

app.use('/product', (req, res, _next) => {
console.log(req.body);
res.redirect('/');
});
app.use(express.json());
应用程序使用('/add product',(\u req,res,\u next)=>{
res.send(“添加产品”);
});
应用程序使用(“/产品”,(请求、资源和下一步)=>{
控制台日志(请求主体);
res.redirect('/');
});

第二个中间件中的
console.log(req.body)
在使用
app.use(bodyParser.urlencoded({extended:false})时返回一个空对象
返回通过表单发送的具有正确值的对象。我发现很难理解,我做错了什么。任何好的解释都将不胜感激。谢谢不,这是不对的。
app.use(express.json());
是使用
app.use(bodyparser.json());
的替代方法

事实上,如果您查看一下,您可以看到
express.json
只是一个别名

但是,在您的情况下,您需要解析内容类型application/x-www-form-urlencoded,这就是为什么您需要保留

app.use(bodyParser.urlencoded({extended:false})


作为中间件。有关更多信息,请参见。

不,这是不正确的。
app.use(express.json());
是使用
app.use(bodyparser.json());
的替代方法

事实上,如果您查看一下,您可以看到
express.json
只是一个别名

但是,在您的情况下,您需要解析内容类型application/x-www-form-urlencoded,这就是为什么您需要保留

app.use(bodyParser.urlencoded({extended:false})

作为一个中间件。有关更多信息,请参见。

否,
app.use(bodyParser.json())
可以替换为
app.use(express.json())
和获取表单体,
app.use(bodyParser.urlcoded({extended:false})
可以替换为方便的
app.use(express.urlcoded())
使用express版本4.16或更高版本时

否,
app.use(bodyParser.json())
可以替换为
app.use(express.json())
并获取表单体,
app.use(bodyParser.urlcoded({extended:false})
可以替换为方便的
app.use(express.urlcoded())
使用express 4.16或更高版本时