搜尋

首頁  >  問答  >  主體

node.js - nodejs 怎么获取post请求的json数据

url:http://127.0.0.1:3000/flow/save
[{
"mobile": "13444444444",
"mac": "30-3A-64-91-52-98",
"lastRefTime": 1438332288,
"up": 1111,
"down": 222
}]

服务器: app.post('/flow/save', traffic); 怎么获取Json数组

天蓬老师天蓬老师2867 天前628

全部回覆(5)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 11:58:02

    res.body

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 11:58:02

    呃,用的是express麼? express的路由的話,可以在第二個參數處理,像這樣:

    javascriptapp.post('/flow/save', require('body-parser').json(), traffic);
    

    如果你是非框架的話,那麼應當自己接受到req後做處理,大致的流程是這樣

    function parseJSON(req,res,next){
        var arr = [];
        req.on("data",function(data){
            arr.push(data);
        });
        req.on("end",function(){
            var data= Buffer.concat(arr).toString(),ret;
            try{
                var ret = JSON.parse(data);
            }catch(err){}
            req.body = ret;
            next();
        })
    }
    

    就是簡單的接收內容並且JSON.parse啦

    回覆
    0
  • 迷茫

    迷茫2017-04-17 11:58:02

    用 express 的中間件 body-parser

    var app = require('express')();
    var bodyParser = require('body-parser');
    var multer = require('multer'); 
    
    app.use(bodyParser.json()); // for parsing application/json
    app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
    app.use(multer()); // for parsing multipart/form-data
    
    app.post('/', function (req, res) {
      console.log(req.body);
      res.json(req.body);
    })

    同源的情況下,我用的是fetch

        var json = [{
          "mobile": "13444444444",
          "mac": "30-3A-64-91-52-98",
          "lastRefTime": 1438332288,
          "up": 1111,
          "down": 222
        }];
        var data = JSON.stringify(json);
        fetch('http://127.0.0.1:3000/flow/save',{
          method:'POST',  
          headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
          },
          body:data
        })

    非同源的情況下要'Content-Type': 'application/x-www-form-urlencoded' 的標準的編碼格式
    然後把json 轉換為FormData 物件
    就可以正常接收到json

    不然 req.body 會一直是 {} 這樣的空物件。

    回覆
    0
  • PHPz

    PHPz2017-04-17 11:58:02

    非json資料怎麼取得的它就怎麼被拿到,無非是個資料格式的問題
    在服務端JSON.parse下就能叨叨JSON物件(包括陣列)

    回覆
    0
  • 黄舟

    黄舟2017-04-17 11:58:02

    json本身就是字串,只是不同語言可以把json字串轉換與自身相適應物件或其他變數類型。

    一般都有:
    - 把json格式的字串轉換成xx
    - 把xx轉換成json格式的字串

    這裡的xx就是上面的物件或其他變數類型。

    回覆
    0
  • 取消回覆