2014-07-06 5 views
7

Ich bin sehr neu zu Knoten. Ich bin an dem Punkt, an dem ich einen einfachen Server habe, der nur die Anfrage Abfrage und die Anfrage Körper drucken soll, die es dauert. Was ich verstanden habe ist, dass die "Handle Anfrage" -Funktion tatsächlich kein Anfrageobjekt, sondern ein IncomingMessage Objekt zurückgibt.URL und Körper von IncomingMessage erhalten?

Es gibt zwei Dinge, die ich nicht verstehe: Wie die Query-String und die Körper zu erhalten.

Ich bekomme nur den Pfad, ohne die Abfrage undefined für den Körper.

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

Request-Code:

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

Bitte beachten Sie, dass ich ein Anfänger bin. Ich bin nicht auf der Suche nach Express-Lösungen.

Antwort

4

Der Grund dafür, dass Sie die Abfragezeichenfolge unter request.url nicht sehen, ist, dass Sie keine korrekt senden. In Ihrem Anfragecode, there is no query property of options. Sie müssen append your querystring to the path.

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

Für Ihre zweite Frage, wenn Sie den gesamten Anfragekörper wollen, müssen Sie aus dem Anfrageobjekt wie ein Stream lesen.

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