express4版本中的“bodyParser”已被弃用报错解决方案
问题描述
使用node中的express框架搭建好后端服务以后,需要接收相应的get、post、put、delete请求等。对于post请求接参数,以前的时候,我们是下载body-parser插件包解析,然后在post请求的请求体req.body中就能拿到相应请求参数了。但是现在搭建express项目我们会发现,居然报错了,说bodyParser被弃用了,报错图如下:
报错截图
文章图片
报错原因
我们知道bodyParser插件包能将表单里的数据格式化,方便我们取参,在express4版本之前,都是以npm包的形式使用,想要使用bodyParser需要npm下载对应包,然后require引入包使用即可。但是设计express的大佬们发现bodyParser使用量很高、而且源代码优质简洁,所以干脆就把bodyParser的源代码加入到express的源代码中去了,集成以后,开发者就可以摈弃以前的方式,使用新的方式,这样的话,更加方便快捷。
原来的写法
const express = require('express');
const app = express();
var bodyParser = require('body-parser');
//需要npm下载并引入bodyParser的包,才能得到post请求的参数
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.get('/', (req, res)=>{
res.send('Hello world');
});
app.post('/postTest', (req, res)=>{
console.log('post请求体传参',req.body);
res.send('post请求测试');
});
app.listen(8083, ()=>{
console.log('服务启动中')
})
现在的写法
const express = require('express');
const app= express();
app.use(express.urlencoded({extended: false}));
// 现在就方便多了,express的两个方法一执行就行啦
app.use(express.json());
app.get('/', (req, res)=>{
res.send('Hello world');
});
app.post('/postTest', (req, res)=>{
console.log('post请求体传参',req.body);
res.send('post请求测试');
});
app.listen(8083, ()=>{
console.log('服务启动中')
})
总结 【express4版本中的“bodyParser”已被弃用报错解决方案】对比一下
原来的写法
的第三行、第四行、第五行的,和现在的写法
第三行、第四行,我们就可以明显看出,express4版本以后现在的写法更加简洁。注意:app.use(express.urlencoded({extended: false}))
和app.use(express.json())
这两个语句,要放在express实例对象挂载url路由之前,就是放在app.get( )、app.post( )
之前。正常情况下,node项目中url路由都是模块化拆分处理,所以就是要放在app.use(allRouter)
之前。就是解析post请求参数的两个语句的位置优先级比较高。
另外说一下,虽然我们的编辑器(vscode)会提示这样的body-parser
被弃用的相关文字介绍,但是,实际上,在express4版本中npm安装bodyparser
包也是可以使用的,也是能够接收到post请求中的参数的,但是,我们还是按照最新的写法来会好些...
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 如何在Mac中的文件选择框中打开系统隐藏文件夹