node.js parse JSON do pedido

Estou enviando um object JSON de credenciais com a seguinte solicitação para node.js:

credentials = new Object(); credentials.username = username; credentials.password = password; $.ajax({ type: 'POST', url: 'door.validate', data: credentials, dataType: 'json', complete: function(validationResponse) { ... } }); 

No lado do servidor eu gostaria de carregar as credenciais enviadas em um object JSON para usá-lo ainda mais ..

No entanto, não sei como tirar o JSON do object req …

 http.createServer( function (req, res) { // How do i acess the JSON // credentials object here? } ).listen(80); 

(eu tenho um dispatcher na minha function (req, res) passando o req mais adiante para controllers, então eu não gostaria de usar a function .on (‘data’, …))

No lado do servidor, você receberá os dados do jQuery como parâmetros de solicitação, não JSON. Se você enviar dados no formato JSON, receberá JSON e precisará analisá-los. Algo como:

 $.ajax({ type: 'GET', url: 'door.validate', data: { jsonData: "{ \"foo\": \"bar\", \"foo2\": 3 }" // or jsonData: JSON.stringify(credentials) (newest browsers only) }, dataType: 'json', complete: function(validationResponse) { ... } }); 

No lado do servidor, você fará:

 var url = require( "url" ); var queryString = require( "querystring" ); http.createServer( function (req, res) { // parses the request url var theUrl = url.parse( req.url ); // gets the query part of the URL and parses it creating an object var queryObj = queryString.parse( theUrl.query ); // queryObj will contain the data of the query as an object // and jsonData will be a property of it // so, using JSON.parse will parse the jsonData to create an object var obj = JSON.parse( queryObj.jsonData ); // as the object is created, the live below will print "bar" console.log( obj.foo ); } ).listen(80); 

Observe que isso funcionará com GET. Para obter os dados do POST, dê uma olhada aqui: Como você extrai dados do POST no Node.js?

Para serializar seu object para JSON e definir o valor em jsonData, você pode usar JSON.stringify(credentials) (nos navegadores mais recentes) ou JSON-js . Exemplos aqui: Serializando para JSON em jQuery

Console.log o req

 http.createServer( function (req, res) { console.log(req); // will output the contents of the req } ).listen(80); 

Os dados do post estarão em algum lugar, se forem enviados com sucesso.