基于node.js依赖express解析post请求四种数据格式

node.js依赖express解析post请求四种数据格式

分别是这四种:

  • www-form-urlencoded
  • form-data
  • application/json
  • text/xml

1、www-form-urlencoded

这是http的post请求默认的数据格式,需要body-parser中间件的支持

服务器端的demo:

?
1
2
3
4
5
6
7
8
9
10
11
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:

?
1
2
3
4
5
6
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解析, 添加中间件进行解析即可

?
1
app.use(bodyParser.json());

4、text/xml

body-parser默认不支持这种数据格式

解决方法:把请求体参数按照字符串读取出来,然后使用 xml2json 包把字符串解析成json对象,然后对json对象进行操作,方便得多。

注意:我们还是要使用 body-parse 得到字符串,然后再转化.

利用req上定义的事件 data 来获取http请求流, end 事件结束请求流的处理.

利用 xml2json 把上面得到的请求参数流(我们直接转化为字符串)转化为 json 对象.

demo如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 是一个非阻塞 I/O 的环境,能够快速地构建高效的网络应用程序。而 Express 则是 Node.js 中最受欢迎的 Web 框架之一,它为 Node.js 提供了大量的功能和模块。其中,解析 POST 请求数据格式Express 最常用的功能之一。 Express 支持解析四种 POST 请求数据格式:URL-encoded 格式、JSON 格式、Raw 格式和 multipart/form-data 格式。 1. URL-encoded 格式:这是最常用的 POST 数据格式,也是默认格式。它的数据格式类似于 URL 查询字符串,通过 key=value 的形式传递参数Express 提供了 body-parser 中间件,可以自动将 URL-encoded 格式的请求体数据解析JSON 格式。 2. JSON 格式:JSON 是一种轻量级的数据交换格式,它比 XML 更加简洁易懂,也更加易于解析。如果服务端需要处理 JSON 格式的请求,可以使用 express.json() 中间件来解析请求体数据。 3. Raw 格式:Raw 格式是一种原始数据格式,不做任何编码和处理。如果客户端发送的 POST 请求数据是 Raw 格式的,服务端需要使用 body-parser 中间件提供的 raw() 方法解析请求体数据,将其转换成 Buffer 类型。 4. multipart/form-data 格式:这种格式常用于上传文件或者提交包含二进制数据的表单。如果服务端需要处理 multipart/form-data 格式的请求,可以使用 multer 中间件来解析请求体数据。multer 中间件可以处理文件上传,同时还支持设置上传文件的限制条件。 综上所述,Express 中提供了多种中间件来解析不同格式的 POST 请求数据,开发者可以根据实际需求选择对应的中间件来使用。这些中间件的使用方式都非常简单,在应用程序中添加一条或几条中间件即可完成对 POST 请求数据的解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值