2011-12-21 15 views
53

In questo esempio "Ciao Mondo":all'analisi delle stringhe di query in node.js

// Load the http module to create an http server. 
var http = require('http'); 

// Configure our HTTP server to respond with Hello World to all requests. 
var server = http.createServer(function (request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.end("Hello World\n"); 
}); 

// Listen on port 8000, IP defaults to 127.0.0.1 
server.listen(8000); 

// Put a friendly message on the terminal 
console.log("Server running at http://127.0.0.1:8000/"); 

Come posso ottenere i parametri della stringa di query?

http://127.0.0.1:8000/status?name=ryan 

Nella documentazione, hanno accennato:

node> require('url').parse('/status?name=ryan', true) 
{ href: '/status?name=ryan' 
, search: '?name=ryan' 
, query: { name: 'ryan' } 
, pathname: '/status' 
} 

Ma non ho capito come usarlo. Qualcuno potrebbe spiegare?

Grazie in anticipo

risposta

87

È possibile utilizzare il metodo parse dal URL module nella richiesta di richiamata.

var http = require('http'); 
var url = require('url'); 

// Configure our HTTP server to respond with Hello World to all requests. 
var server = http.createServer(function (request, response) { 
    var queryData = url.parse(request.url, true).query; 
    response.writeHead(200, {"Content-Type": "text/plain"}); 

    if (queryData.name) { 
    // user told us their name in the GET request, ex: http://host:8000/?name=Tom 
    response.end('Hello ' + queryData.name + '\n'); 

    } else { 
    response.end("Hello World\n"); 
    } 
}); 

// Listen on port 8000, IP defaults to 127.0.0.1 
server.listen(8000); 

vi consiglio di leggere il HTTP module documentation per avere un'idea di quello che si ottiene nel createServer callback. Dovresti anche dare un'occhiata a siti come http://howtonode.org/ e checkout allo Express framework per iniziare con Node più velocemente.

+0

Grazie, ho provato, ha funzionato. Grazie per i link. Suppongo di aver bisogno di saperne di più: D –

+0

miglior consiglio; grazie :) – gdibble

+0

[Questo link] (https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/) mi aiuta a capire che '[t] l'oggetto di richiesta è un'istanza di IncomingMessage', e che 'http.IncomingMessage' [ha una proprietà] (https://nodejs.org/api/http.html)' url'. –

17

C'è anche s' il QueryString moduleparse() metodo:

var http = require('http'), 
    queryString = require('querystring'); 

http.createServer(function (oRequest, oResponse) { 

    var oQueryParams; 

    // get query params as object 
    if (oRequest.url.indexOf('?') >= 0) { 
     oQueryParams = queryString.parse(oRequest.url.replace(/^.*\?/, '')); 

     // do stuff 
     console.log(oQueryParams); 
    } 

    oResponse.writeHead(200, {'Content-Type': 'text/plain'}); 
    oResponse.end('Hello world.'); 

}).listen(1337, '127.0.0.1'); 
Problemi correlati