基于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 相关文章推荐
JavaScript与C# Windows应用程序交互方法
Jun 29 Javascript
JavaScript OOP类与继承
Nov 15 Javascript
js实现addClass,removeClass,hasClass的函数代码
Jul 13 Javascript
跟我学习JScript的Bug与内存管理
Nov 18 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
vue 配置多页面应用的示例代码
Oct 22 Javascript
微信小程序整合使用富文本编辑器的方法详解
Apr 25 Javascript
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
JavaScript获取某一天所在的星期
Sep 05 Javascript
react合成事件与原生事件的相关理解
May 13 Javascript
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
杏林同学录(七)
2006/10/09 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php查看当前Session的ID实例
2015/03/16 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
python3使用urllib模块制作网络爬虫
2016/04/08 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
python 如何停止一个死循环的线程
2020/11/24 Python
森林防火工作方案
2014/02/14 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
学校校庆演讲稿
2014/05/22 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
西安导游词
2015/02/12 职场文书
修辞手法有哪些?
2019/08/29 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
opencv读取视频并保存图像的方法
2021/06/04 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL