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

时间:2021-05-25

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);

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章