簡體   English   中英

Node.js HTTP:從不調用請求“結束”事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM