2014-10-10 64 views
0

我有這個基本的服務器:獲取request.body中的NodeJS

var http = require("http"); 
var url = require("url"); 

var routing = require("./RoutingPath"); 

function start() { 
    function onRequest(request, response) { 

     var path = url.parse(request.url).pathname; 
     var query = url.parse(request.url,true).query; 

     routing.Route(path.toLowerCase(), query, function(recordset){ 

      response.writeHead(200, {"Content-Type": "application/json"}); 

      if (recordset != null) 
      { 
       console.log(JSON.stringify(recordset, null, 4));     
       response.write(JSON.stringify(recordset, null, 4)); 
      } 

      response.end(); 
      console.log(); 
     }); 
    } 

    http.createServer(onRequest).listen(8888); 
    console.log("Server has started!"); 

} 

我用「HttpRequester」發佈的請求,並在(小文件)中添加附件或使用文本框的內容發送數據在裏面。在我的服務器中,我收到請求但沒有訪問它的正文。我試過了:

console.log(request.body); 

但是它沒有定義。

我試圖打印所有請求來查找我的數據,但它太長,我看不到所有的請求。

我嘗試了其他請求,因爲我認爲「HttpRequester」可能不會向我發送來自客戶端的朋友的正確請求。

如何訪問請求的主體?

回答

2

如果需要使用默認的HTTP模塊,您需要從數據流中讀取請求體:

if (request.method == 'POST') { 
    request.on('data', function(chunk) { 
     console.log("Received body data:"); 
     console.log(chunk.toString()); 
    }); 
} 

我建議你看看expressjs,它已經擁有路由,並具有各種身體解析器的文件/ json等

+0

這可能會導致部分正文數據,「request.on('end',function(){console.log('request complete'})」監聽器將確認請求完成。 – Udhaya 2018-01-24 13:10:18