301  
查询码:00000776
node.js依赖express解析post请求四种数据格式
来源:https://www.cnblogs.com/whybxy/p/8690246.html
作者: 朱凡 于 2020年04月19日 发布在分类 / FM组 / FM_App 下,并于 2020年04月19日 编辑
express 请求 require bodyparser urlencoded body-parser function 解析 parser 数据

王汉炎


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

分别是这四种:

www-form-urlencoded,

form-data,

application/json,

text/xml

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


 推荐知识

 历史版本

修改日期 修改人 备注
2020-04-19 11:01:25[当前版本] 朱凡 创建版本

  目录
    知识分享平台 -V 4.8.7 -wcp