基于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 相关文章推荐
file模式访问网页时iframe高度自适应解决方案
Jan 16 Javascript
js 控制图片大小核心讲解
Oct 09 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
Feb 07 Javascript
JS获取表格内指定单元格html内容的方法
Mar 31 Javascript
javascript设置文本框光标的方法实例小结
Nov 04 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
Feb 12 Javascript
关于vue.js v-bind 的一些理解和思考
Jun 06 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
Vue中的字符串模板的使用
May 17 Javascript
layui的layedit富文本赋值方法
Sep 18 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
Aug 07 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
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
浅谈PHP中的
2016/04/23 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
javascript 禁止复制网页
2009/06/11 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
详解Django中的form库的使用
2015/07/18 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
python中的yield from语法快速学习
2020/11/06 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
项目经理聘任书
2014/03/29 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
大学生英文求职信范文
2015/03/19 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
800字作文之大雪
2019/12/04 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL