2014-07-06 23 views
7

Tôi rất mới với nút. Tôi đang ở điểm mà tại đó tôi có một máy chủ đơn giản chỉ cần in yêu cầu truy vấn và yêu cầu nội dung mà nó cần. Điều tôi đã hiểu là chức năng "yêu cầu xử lý" thực sự không trả về đối tượng yêu cầu , thay vì đối tượng IncomingMessage.Nhận url và nội dung từ IncomingMessage?

Có hai điều tôi không hiểu: Cách lấy chuỗi truy vấn body.

Tôi chỉ nhận được đường dẫn, không có truy vấn và không được xác định cho phần thân.

server Code:

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/"); 

Yêu cầu mã:

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(); 

Xin lưu ý rằng tôi là một người mới bắt đầu hoàn tất. Tôi không tìm kiếm các giải pháp thể hiện.

Trả lời

4

Lý do bạn không nhìn thấy chuỗi truy vấn tại request.url là bạn không gửi chính xác. Trong mã yêu cầu của bạn, there is no query property of options. Bạn phải append your querystring to the path.

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

Đối với câu hỏi thứ hai, nếu bạn muốn toàn bộ yêu cầu, bạn phải đọc từ đối tượng yêu cầu như luồng.

var server = http.createServer(function (request, response) { 
    request.on('data', function (chunk) { 
    // Do something with `chunk` here 
    }); 
}); 
Các vấn đề liên quan