基于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 相关文章推荐
修改发贴的编辑功能
Mar 07 Javascript
jQuery 打造动态下滑菜单实现说明
Apr 15 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
DOM 中的事件处理介绍
Jan 18 Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
Nov 20 Javascript
jQuery中复合属性选择器用法实例
Dec 31 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 Javascript
vue跳转方式(打开新页面)及传参操作示例
Jan 26 Javascript
解决Nuxt使用axios跨域问题
Jul 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
PHP开发负载均衡指南
2010/07/17 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
three.js 入门案例详解
2018/01/23 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
python根据京东商品url获取产品价格
2015/08/09 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
python逆向入门教程
2018/01/15 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
Python 可视化神器Plotly详解
2020/12/26 Python
佳能法国商店:Canon法国
2019/02/14 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
华为python面试题
2016/05/03 面试题
乔丹名人堂演讲稿
2014/05/24 职场文书
人力资源求职信
2014/05/25 职场文书
法定代表人证明书
2014/11/28 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
民事调解协议书
2016/03/21 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技