node.js http客戶端
阿新 • • 發佈:2019-01-25
一、http模組提供了兩個函式http.request和http.get,功能是作為客戶端向HTTP伺服器發起請求。
Ext.Ajax.request({},function(response))1.http.request(options,callback)發起HTTP請求,接受兩個引數,option是一個類似關聯陣列的物件,表示請求的引數,callback是請求的回撥函式,option常用的引數如下
host:請求網站的域名或IP地址 port:請求網站的埠,預設是80, method:請求方法,模式是GET/POST path:請求的相對於根的路徑,預設是"/"。QueryString應該包含在其中,例如/search?query=marico headers:一個關聯陣列物件,為請求頭的內容 callback傳遞一個引數,為http.ClientResponse的例項 http.request返回一個http.ClientRequest的例項 案例:clientRequest.jsvar http=require('http'); var querystring=require('querystring'); //啟動服務 http.createServer(function(req,res){ console.log('請求到來,解析引數'); //解析post請求 var post=''; req.on('data',function(chunk){ post+=chunk; }); req.on('end',function(){ post=querystring.parse(post); //解析完成 console.log('引數解析完成,返回name引數'); res.end(post.name); }); }).listen(3000); //客戶端請求 var contents=querystring.stringify({ name:'marico', age:21, address:'beijing' }); //Ext.encode(); //宣告請求引數 var options={ host:'localhost', path:'/', port:3000, method:'POST', headers:{ 'Content-Type':'application/x-www-form-urlencoded', 'Content-Length':contents.length } }; //傳送請求 var req=http.request(options,function(res){ res.setEncoding('utf-8'); res.on('data',function(data){ console.log('後臺返回資料'); console.log(data); }) }); req.write(contents); //必須呼叫end() req.end();
2.http.get(options,callback) http模組還提供了一個更加簡便的方法用於處理GET請求:http.get。它是http.request的簡化版,唯一的區別在於http.get自動將請求方法設為GET請求,同時不需要手動呼叫req.end();
案例:clientGet.jsvar http=require('http'); var url=require('url'); var util=require('util'); //啟動服務 http.createServer(function(req,res){ console.log('請求到來,解析引數'); var params=url.parse(req.url,true); console.log('解析完成'); console.log(util.inspect(params)); console.log('向客戶端返回'); res.end(params.query.name); }).listen(3000); //客戶端請求 var request=http.get({ host:'localhost', path:'/user?name=marico&age=21', port:3000},function(res){ res.setEncoding('utf-8'); res.on('data',function(data){ console.log(' 服務端相應回來的資料為:'+data); }) });