基于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右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
JavaScript 消息框效果【实现代码】
Apr 27 Javascript
关于input全选反选恶心的异常情况
Jul 24 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
老生常谈javascript的类型转换
Oct 12 Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
Mar 13 Javascript
vue-quill-editor实现图片上传功能
Aug 08 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 21 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提交后跳转
2013/06/23 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
js style动态设置table高度
2014/10/21 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
Vue实现图书管理小案例
2020/12/03 Vue.js
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
小学校长汇报材料
2014/08/20 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
经费申请报告
2015/05/15 职场文书
入学证明
2015/06/23 职场文书
爱护环境建议书
2015/09/14 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js