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

分别是这四种:

www-form-urlencoded,

form-data,

application/json,

text/xml

www-form-urlencoded

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

服务器端的demo:

varexpress = require('express');varapp = express();varbodyParser = 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进行测试,这里就不赘述。

form-data

这种方式一般用于数据上传,需要中间件connect-multiparty的支持

服务器端的demo:

varmultipart = require('connect-multiparty');varmultipartMiddleware = multipart();

app.post('/formdata',multipartMiddleware,function (req, res) {

  console.log(req.body);

  res.send("post successfully!");

});

application/json

body-parser中间件支持json解析, 添加中间件进行解析即可

app.use(bodyParser.json());

text/xml

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

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

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

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

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

demo如下:

varexpress = require('express');varbodyParser = require('body-parser');varxml2json=require('xml2json');varapp = express();

app.use(bodyParser.urlencoded({

  extended: true}));

app.post('/xml',function (req, res) {

  req.rawBody = '';//添加接收变量varjson={};

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

你可能感兴趣的:(node.js依赖express解析post请求四种数据格式())