express.json与bodyParser.json

express.json与bodyParser.json,json,express,Json,Express,我正在编写一个相对较新的应用程序,我想知道应该使用哪一个: express.json() 或 我能假设他们做同样的事情吗 我只想使用express.json,因为它已经内置了。早期版本的express曾经捆绑了很多中间件。bodyParser是它附带的中间件之一。当Express 4.0发布时,他们决定从Express中删除捆绑的中间件,并将其作为单独的包。安装bodyParser模块后,语法从app.useexpress.json更改为app.usebodyParser.json bodyP

我正在编写一个相对较新的应用程序,我想知道应该使用哪一个:

express.json()

我能假设他们做同样的事情吗


我只想使用express.json,因为它已经内置了。

早期版本的express曾经捆绑了很多中间件。bodyParser是它附带的中间件之一。当Express 4.0发布时,他们决定从Express中删除捆绑的中间件,并将其作为单独的包。安装bodyParser模块后,语法从app.useexpress.json更改为app.usebodyParser.json

bodyParser在4.16.0版中被添加回Express,因为人们希望它像以前一样与Express捆绑在一起。这意味着如果您使用的是最新版本,就不必再使用bodyParser.json。您可以改用express.json

4.16.0的发布历史是为感兴趣的人准备的,拉取请求是。

是!正确的

var createError=require'http-errors'; var express=需要“express”; var path=需要“路径”; var cookieParser=需要“cookie-parser”; var记录器=需要“摩根”; var indexRouter=require./routes/index'; var usersRouter=require./routes/users'; var-app=express; //查看引擎设置 app.set'views',path.join__dirname',views'; 应用程序设置“查看引擎”、“哈巴狗”; app.uselogger'dev'; app.useexpress.json; app.useexpress.urlencoded{extended:false}; app.usecookieParser; app.useexpress.staticpath.join__dirname,“public”; 应用程序。使用“/”,索引路由器; 使用'/users',usersRouter; //捕获404并转发到错误处理程序 app.usefunctionreq,res,next{ nextcreateError404; }; //错误处理程序 app.usefunctionerr,req,res,next{ //设置局部变量,仅提供开发中的错误 res.locals.message=err.message; res.locals.error=req.app.get'env'='development'?err:{}; //呈现错误页面 res.statuserr.status | | 500; res.render“error”; }; module.exports=app; 是的,两者都一样

如果进入文件节点_module/express/lib/express.js

您可以在模块依赖项下看到,主体解析器模块已导入

/**
 * Module dependencies.
 */

var bodyParser = require('body-parser')
//other modules
bodyparser模块中的对象和方法在使用特殊的object module.exports导出时可以访问

exports = module.exports = createApplication;
exports.json = bodyParser.json
只需调用

express.json()

是的!!由于人们普遍认为应该将body解析器与express集成在一起,最新版本正是这样做的。您应该正确地假设两者执行相同的任务,即将传入的请求对象识别为JSON对象。请随意使用。

是!!两者都可以使用。但是,由于express.json现在已经内置到express中,因此使用express.json比使用bodyParser.json更明智。

虽然这个代码片段可以解决这个问题,但确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您代码建议的原因;然后呢?啊,是的,你链接的公关中也提到了。伟大的这是否意味着它们做相同的工作?如果我同时使用//数据解析app.useexpress.json;app.useexpress.urlencoded{extended:false};好吗?因为youtube上的教程告诉我both@rickvian-如果您愿意,可以同时使用这两种方法。json表示json,urlencoded表示URL编码的数据。如果同时添加这两种类型,则可以解析这两种类型。express@4.17.1只使用主体解析器“1.19.0”作为依赖项
express.json()