基于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 相关文章推荐
php gethostbyname获取域名ip地址函数详解
Jan 24 Javascript
基于jquery的一个图片hover的插件
Apr 24 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
jQuery 插件封装的方法
Nov 16 Javascript
Bootstrap导航条学习使用(二)
Feb 08 Javascript
php register_shutdown_function函数详解
Jul 23 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
如何用JavaScript实现一个数组惰性求值库
May 05 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测试程序运行时间的类
2012/02/05 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
PHP实现微信对账单处理
2018/10/01 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Django的信号机制详解
2017/05/05 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
植物选择:Botanic Choice
2017/02/15 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
职业生涯规划怎么写
2013/12/29 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
英文辞职信范文
2015/05/13 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server