[英]Node.js HTTP: request 'end' event is never called
我有一個客戶端正在向我的 node.js 服務器發送數據塊。
我想監聽“結束”事件並檢索累積的請求正文。
這是我的代碼:
app.post('/users', function(req, res){
req.on('end', function() { // WHY IS THIS NEVER FIRED?
console.log(req.body);
res.send({
"status": "ok"
});
});
});
問題是“結束”事件永遠不會被觸發。
有誰知道為什么?
另外,如果我這樣做, req.body 會是所有身體塊的累積體嗎?
我遇到了同樣的問題,發現這個討論很有幫助: My http.createserver in node.js doesn't work?
簡單地說,通過在.createServer
循環中插入以下行: request.on("data",function() {})
但在request.on
循環使其工作之后。
基本上 http POST 僅在您 POST 到服務器時觸發。 我不能確定,但我假設您只是試圖訪問 web 瀏覽器中的server:port/users
並且未能得到響應。 默認情況下,web 瀏覽器正在GET
服務器。 要解決此問題,您有兩個選擇。
1.如果您將app.post
更改為app.get
事件將在您訪問/users
時正確觸發
2.或者您可以使用表格發送帖子 function。 例如,如果您使用GET
訪問頁面,以下代碼將顯示一個表單。 當您提交表單時,它將觸發POST
。
var express = require('express'),
app = express.createServer();
app.listen(1337, "127.0.0.1");
app.get('/users',function(req,res){
res.send('<form method="post" action="/users"><input type="submit" value="Submit" /></form>');
})
app.post('/users', function(req, res){
req.on('end', function() {
console.log('success');
res.send('success!!!');
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.