基于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 相关文章推荐
编辑浪子版表单验证类
May 12 Javascript
JavaScript 学习笔记(十六) js事件
Feb 01 Javascript
jQuery的one()方法用法实例
Jan 19 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
jQuery实现的多级下拉菜单效果代码
Aug 24 Javascript
基于javascript实现简单的抽奖系统
Apr 15 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 Javascript
js canvas实现写字动画效果
Nov 30 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
Electron实现应用打包、自动升级过程解析
Jul 07 Javascript
Vue Router中应用中间件的方法
Aug 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代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python-基础-入门 简介
2014/08/09 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
保安员岗位职责
2013/11/17 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
社团活动总结
2014/04/28 职场文书
第二课堂活动总结
2014/05/07 职场文书
护理专科学生自荐书
2014/07/05 职场文书
法制工作总结2015
2015/07/23 职场文书
无故旷工检讨书
2015/08/15 职场文书