2016-02-01 84 views
0

我有以下代碼:Node.js的表達POST請求沒有得到參數

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.post('/rasp', function(req, res) { 
res.send("received"); 
res.send(req.body.data); 
}); 
app.listen(process.env.PORT || 5000); 

我用郵差,看看它是否工作,顯然是「接受」文本發送回來,但數據參數是空白。可能是什麼問題呢?

+0

你仍然有,如果你刪除'res.send( 「接收」)這個問題;'?如果你添加'console.log(req.body);'結果是什麼? –

+1

「我用POSTMAN來查看它是否有效」 - 如何?您確實發送了什麼要求? – Quentin

回答

1

基本上,客戶端發送一個請求,並等待來自您的服務器的單個響應。一旦客戶收到該響應,就停止等待另一個響應。此外,Express只允許您爲每個請求發送一個響應(與上面解釋的客戶端一起進行)。您可能可以更改此設置,但我從來沒有處理過它,所以我的答案將僅限於此知識。

您的服務器正在執行res.send('received');並處理響應。您不能再次致電res.send。當您嘗試第二次呼叫時,您應該在服務器上發生錯誤。

您應該發送第一個(也是唯一的)res.send()客戶端需要的所有數據。

服務器響應不應該像日誌記錄一樣處理(例如:發送'received','analyze'等)。保持日誌分離。客戶不想知道所有額外信息,只需要預期的數據響應。

+0

是的,這是問題,現在它工作正常。謝謝! – Vali79

0
var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.listen(process.env.PORT || 5000); 

app.post('/rasp', function(req, res) { 

    res.send({received:true,data:req.body}); 

}); 

可以嘗試這一個,在這裏寫響應

0

我相信你的帖子正文是「data = Some Value」。

如果你想發送多個數據塊,你應該使用res.write和res.end。在你的代碼更改以下行

res.send("received"); 
res.send(req.body.data); 

res.write("received"); 
res.end(req.body.data);