基于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插件之easing 动态菜单
Aug 21 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
动态加载jquery库的方法
Feb 12 Javascript
网页广告中JS代码的信息监听示例
Apr 02 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
详解Javascript继承的实现
Mar 25 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 Javascript
vue filter 完美时间日期格式的代码
Aug 14 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 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
建立动态的WML站点(一)
2006/10/09 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP文件与目录操作示例
2016/12/24 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
深入解析Python中的lambda表达式的用法
2015/08/28 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
Python 加密的实例详解
2017/10/09 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
pymysql模块使用简介与示例
2020/11/17 Python
python代码实现图书管理系统
2020/11/30 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
玖熙女鞋美国官网:Nine West
2016/10/06 全球购物
出纳岗位职责模板
2013/11/27 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
品德评语大全
2014/05/05 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
Django中session进行权限管理的使用
2021/07/09 Python
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js