您的位置:首页 > 理论基础 > 计算机网络

Node(6) Accessing GET and POST data using http.ServerRequest

2012-07-29 00:08 344 查看
http.ServerRequest or simply request contains information from GET or POST

Get objects are in url

querystring.parse() turn the post data into an object



GET

GET example:

var http = require( 'http' );
var url = require( 'url' );
var util = require( 'util');
var querystring = require( 'querystring' );
var server = http.createServer( function( request, response ){

if( request.method === 'GET' ){
//parse the url
var parts = url.parse( request.url )

//write the GET details to response
response.writeHead( 200,  {'content-type': 'text/plain'});
response.write( 'path => ' + parts.path + '\n');
response.write( 'query => ' + parts.query + '\n');
response.write( 'foo => ' + querystring.parse( parts.query ).foo + '\n' );

response.end('Done!');
}
});

server.listen( 9000 );
console.log( 'server started' );


Without connect middleware

Post objects are in received in chunks,.

using data and end event

var http = require('http');
var querystring = require( 'querystring');
var util = require('util');
var form = require('fs').readFileSync('form.html');
var maxData = 2*1024*1024; //prevent mass post data

http.createServer( function(request, response){
if( request.method === 'POST' ){
//the post data is received by chunks
var postData = '';
request.on('data', function(chunk){
postData += chunk;
if( postData.length > maxData ){
pstData = '';
this.pause;//stop further data
response.writeHead(413);
response.end( 'Request too large');
}
}).on( 'end', function(){
if( !postData ){ response.end(); return; }//prevent empty post
var postDataObject = querystring.parse(postData);

//print postData to console
console.log('User Posted: \n', postData );

//response with postDataObject
response.end( 'You Posted: \n' + util.inspect( postDataObject));
});
}
if( request.method === 'GET' ){
response.writeHead(200, {
'Content-Type':'text/html'
});
response.end(form);
}
}).listen(9000);


Acess POST data using connect module 

request.body

var util = require( 'util');
var connect = require( 'connect');
var form = require( 'fs').readFileSync( 'form.html');

//connect.bodyParser allow connect to retrieve POST data
connect( connect.limit('64kb'), connect.bodyParser(),
function( request, response ){
if( request.method === 'POST'){
console.log( 'User posted:\n', request.body);
//request.body is the post object
response.end('You Posted:\n'+ util.inspect( request.body));
}
if( request.method === 'GET'){
response.writeHead(200, {
'Content-Type': 'text/html'
});
response.end(form);
}
}).listen( 9000 );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息