基于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数组插入一条记录的代码
Aug 30 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
Aug 25 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
Jul 22 jQuery
微信小程序实现根据字母选择城市功能
Aug 16 Javascript
微信小程序实现图片放大预览功能
Oct 22 Javascript
在Mac下彻底卸载node和npm的方法
May 16 Javascript
vue项目引入字体.ttf的方法
Sep 28 Javascript
让IDE识别webpack的别名alias的实现方法
May 06 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
学习php设计模式 php实现状态模式
2015/12/07 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
Python中的jquery PyQuery库使用小结
2014/05/13 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
python 爬虫请求模块requests详解
2020/12/04 Python
nohup的用法
2012/11/26 面试题
2014全国两会心得体会
2014/03/17 职场文书
企业法人授权委托书
2014/04/03 职场文书
会计个人实习计划书
2014/08/15 职场文书
课内比教学心得体会
2014/09/09 职场文书
党员民主生活会材料
2014/12/15 职场文书
总结Python常用的魔法方法
2021/05/25 Python
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫