从IncomingMessage获取url和正文?

我对节点非常陌生。 我在我有一个简单的服务器,应该只是打印请求查询和它所需要的身体要点。 我所理解的是,“处理请求”函数实际上不返回请求对象 ,而是一个IncomingMessage对象。

有两件事我不明白:如何获取查询string正文

我得到的path,没有查询和身体未定义。

服务器代码:

 var http = require('http'); var server = http.createServer(function (request, response) { console.log("Request query " + request.url); console.log("Request body " + request.body); response.writeHead(200, {"Content-Type": "text/plain"}); response.end("<h1>Hello world!</h1>"); }); server.listen(8000); console.log("Server running at http://127.0.0.1:8000/"); 

请求代码:

 var http = require('http'); var options = { host: '127.0.0.1', port: 8000, path: '/', query: "argument=narnia", method: 'GET' }; var req = http.request(options, function(res) { res.setEncoding('utf8'); res.on('data', function (chunk) { console.log('response: ' + chunk); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); req.write("<h1>Hello!</h1>"); req.end(); 

请注意,我是一个完整的初学者。 我不是在寻找唯一的解决scheme。

您在request.url中看不到查询string的原因是您没有正确发送一个查询string。 在您的请求代码中, 没有options query属性 。 你必须追加你的查询string的path

 path: '/' + '?' + querystring.stringify({argument: 'narnia'}), 

对于第二个问题,如果你想要完整的请求体,你必须像请求stream一样从请求对象中读取数据。

 var server = http.createServer(function (request, response) { request.on('data', function (chunk) { // Do something with `chunk` here }); });