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

分别是这四种:express

www-form-urlencoded,json

form-data,服务器

application/json,app

text/xmlpost

  • 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进行测试,这里就不赘述。测试

  • 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!");
    });
  • 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以下:
    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);
相关文章
相关标签/搜索