基于node.js依赖express解析post请求四种数据格式


Posted in Javascript onFebruary 13, 2017

node.js依赖express解析post请求四种数据格式

分别是这四种:

  • www-form-urlencoded
  • form-data
  • application/json
  • text/xml

1、www-form-urlencoded

这是http的post请求默认的数据格式,需要body-parser中间件的支持

服务器端的demo:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
 extended:true
}));
app.post('/urlencoded', function(req, res){
 console.log(req.body);
 res.send(" post successfully!");
});
app.listen(3000);

可以用postman进行测试,这里就不赘述。

2、form-data

这种方式一般用于数据上传,需要中间件connect-multiparty的支持

服务器端的demo:

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/formdata',multipartMiddleware, function (req, res) {
console.log(req.body);
res.send("post successfully!");
});

3、application/json

body-parser中间件支持json解析, 添加中间件进行解析即可

app.use(bodyParser.json());

4、text/xml

body-parser默认不支持这种数据格式

解决方法:把请求体参数按照字符串读取出来,然后使用 xml2json 包把字符串解析成json对象,然后对json对象进行操作,方便得多。

注意:我们还是要使用 body-parse 得到字符串,然后再转化.

利用req上定义的事件 data 来获取http请求流, end 事件结束请求流的处理.

利用 xml2json 把上面得到的请求参数流(我们直接转化为字符串)转化为 json 对象.

demo如下:

var express = require('express');
var bodyParser = require('body-parser');
var xml2json=require('xml2json');
var app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.post('/xml', function (req, res) {
req.rawBody = '';//添加接收变量
var json={};
req.setEncoding('utf8');
req.on('data', function(chunk) { 
req.rawBody += chunk;
});
req.on('end', function() {
json=xml2json.toJson(req.rawBody);
res.send(JSON.stringify(json));
}); 
});
app.listen(3000);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 1.0.2
Oct 11 Javascript
jQuery 使用个人心得
Feb 26 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
Bootstrap每天必学之导航条(二)
Mar 01 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 #Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 #Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 #Javascript
JS中setTimeout和setInterval的最大延时值详解
Feb 13 #Javascript
Vue.js实现简单动态数据处理
Feb 13 #Javascript
JavaScript获取select中text值的方法
Feb 13 #Javascript
详谈$.data()的用法和作用
Feb 13 #Javascript
You might like
第十二节 类的自动加载 [12]
2006/10/09 PHP
我用php+mysql写的留言本
2006/10/09 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python list 合并连接字符串的方法
2013/03/09 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
Python模块文件结构代码详解
2018/02/03 Python
一看就懂得Python的math模块
2018/10/21 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
Python 实现集合Set的示例
2020/12/21 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
百度软件工程师职位
2013/02/14 面试题
市优秀教师事迹材料
2014/02/05 职场文书
闭幕式主持词
2014/04/02 职场文书
应届生面试求职信
2014/07/02 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
Python类方法总结讲解
2021/07/26 Python