zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    什么是 bean 的自动装配?
    什么是 Spring 的内部 bean?
    什么是 Spring 的 MVC 框架?
    Spring AOP and AspectJ AOP 有什么区别?
    解释 JDBC 抽象和 DAO 模块?
    volatile 类型变量提供什么保证?
    一个 Spring Bean 定义 包含什么?
    什么是 Spring MVC 框架的控制器?
    使用 Spring 访问 Hibernate 的方法有哪些?
    什么是 Callable 和 Future?
  • 原文地址:https://www.cnblogs.com/whybxy/p/8690246.html
Copyright © 2011-2022 走看看