前台 ----> 后台
后台要接受 前台的數據,只能通過 http
但是 前台接受 后台的數據有 from ajax jsonp
nodejs 給我們提供了模塊 url 模塊,可以專門解析 url 地址
讓我們在走一遍流程
案例:
const http=require("http"); // 引入 http 模塊,創建服務器
const urlbli=require("url"); // 引入 url 模塊,解析 url 地址
http.createServer(function(req,res){
if(req.url.indexOf("?")!=-1){ //做一個判斷,像谷歌這種高級瀏覽器,每次還會返回一個 favicon;網絡地址后面都回帶?
// 這個代碼的意思是,如果我們這個字符串里面有 ? 在執行里面的語句
var obj=urlbli.parse(req.url,true); // url 模塊的 parse 方法,可以幫我們解析瀏覽器的地址,true 這個參數是處理 瀏覽器通過 get 傳遞的參數
var url=obj.pathname; //回得到一個 obj 的對象
var get=obj.query;
console.log(url,get);
}
req.url // 獲取了 網絡地址
res.write("前台請求的數據");
}).listen(8080);
如果我們運行了 8080 端口,我們在別的服務器上就不能運行了,一個端口,只能運行一個服務器
當然 此等方法也是針對 瀏覽器通過 get 方式請求 才有效
下面,我們的是 post 的請求;
為什么說 get 和 post 的方式不一樣;
如圖:
post 和 get 兩種請求方式的區別:
1. post 數據 可以比 get 數據發送更多的請求 相對而言,post 比 get 方式安全一點;
最重要的是,如果 post 發送,由於 post 可以發送 1 g 的數據,如果要對服務器 一股腦 發送這么大的數據,對服務器來說確實不夠友好,所以 post 的發送方式都是 分段 發送
分段發送:每次發送一小段,分好幾次發送完畢;
案例:
var http=require("http");
var querystring=require("querystring");
http.createServer(function(req,res){
var str=""; // on() 在這個里面相當於事件,我們可以這樣理解 data 事件 end 事件
req.on("data",function(data){ // 我們想要 得到 post 請求的數據,我們要用 on() 參數一:data ,參數二:回調函數;回調函數 data ,我們便能得到參數
str+=data;
})
req.on("end",function(){ // 我們請求完數據 調用這個方法 我們 調用 on() 參數一:end,參數二:回調函數,我們在這里,便能得到完整的數據
var post = querystring(str);
console.log(post);
})
}).listen(8080)
這樣我們便請求完了所以的數據 通過 post 方式