壹、Express框架
前面的章節已經介紹過了,可以使用npm來安裝node.js模塊。具體操作請參照以前寫的nodejs概論。
Express是壹個nodejs的web開源框架,用於快速的搭建web項目。其主要集成了web的odejs.org/topic/50a1fcc7637ffa4155b5a264
五、request模塊
request模塊為開發者提供了壹種簡單訪問HTTP請求的方法。request還支持HTTPS的訪問方法。
安裝:
npm install requset
request模塊基本上覆蓋了所有的HTTP請求方式如GET,POST,HEAD,DEL等。但其最基本的兩個方法是request.get()和request.post().
get和post的區別
get:
1.使用get向服務器發出和接收的請求會附在url之後。類似:?id=1221&name=5555這個url中傳遞了兩個參數,壹個為id,壹個為name。
2.get請求不能超過1024個字節。
post沒有限制,也不會附在url上。
接下來做壹個簡單的實例
get實例:
首先新建壹個服務器app_get.js
var http= require("http");
http.createServer(function(req,res){
res.writeHead(200,{'content-Type':'text/plain'});
res.end('Hello world\n'+req.method);
}).listen(1337,"127.0.0.1");
再建壹個發送求情的request_get.js文件
var request=require('request');
request.get("http://127.0.0.1:1337",function(error,response,result){
console.log(result);
});
在CMD中運行app_get.js,運行成功後,再打開壹個cmd(之前的cmd不要關閉),執行request_get.js文件。
執行後的結果如下
hello world
GET
可以看出,通過request.get方法訪問
http://127.0.0.1:1337 返回的結果就是res.end()的參數
post實例:
和上面壹樣,先新建服務器app_post.js
var http= require("http"),
querystring=require('querystring');
http.createServer(function(req,res){ var postData=""; //開始異步接收客戶端post的數據
req.addListener("data",function (postDataChunk) {
postData += postDataChunk;
}); //異步post數據接收完畢後執行匿名回調函數
req.addListener("end",function(){ var postStr=JSON.stringify(querystring.parse(postData));
res.writeHead(200,{'content-Type':'text/plain'});
res.end(postStr+'\n'+req.method);
});
}).listen(1400,"127.0.0.1");
然後再新建壹個request_post.js
var request=require("request");
request.post('http://127.0.0.1:1400',{form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})
像上面壹樣在cmd中執行後顯示的結果如下:
D:\nodejs\src\request>node request_post.js
{"name":"ermu","book":"node.js"}
POST
request post提交了壹個json對象{"name":"ermu","book":"node.js"}而服務器接通過獲取該POST數據,然後返回客戶端,同時將http請求方式也響應到客戶端。
request post參數可以有兩種傳遞方式。
其中,第壹種是將url和form表單的數據作為json參數在request post傳遞。舉例如下:
request.post('url':'http://127.0.0.1:1400',form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})
另壹種是將url和form作為兩個參數,上面的實例就是使用這種方法。
六、 ?Formidable模塊
該模塊的目的是為了解決文件上傳。
在原生的node.js模塊中,提供了獲取post數據的方法,但是並沒有直接獲取上傳文件。