4.1 請(qǐng)求參數(shù)
客戶(hù)端向服務(wù)器端發(fā)送請(qǐng)求時(shí)授帕,有時(shí)需要攜帶一些客戶(hù)信息侥祭,客戶(hù)信息需要通過(guò)請(qǐng)求參數(shù)的形式傳遞到服務(wù)器端平痰,比如登錄操作款违。
4.2 GET請(qǐng)求參數(shù)
- 參數(shù)被放置在瀏覽器地址欄中,例如:http://localhost:3000/?name=zhangsan&age=20
- 參數(shù)獲取需要借助系統(tǒng)模塊url团南,url模塊用來(lái)處理url地址
const http =require('http');
//導(dǎo)入url系統(tǒng)模塊用于處理url地址
const url = require('url');
const app = http.createServer();
app.on('request',(req,res) => {
//將url路徑的各個(gè)部分解析出來(lái)并返回對(duì)象
// true代表將參數(shù)解析為對(duì)象格式
let { query }= url.parse(req.url,true);
console.log(query);
});
app.listen(3000);
4.3 POST請(qǐng)求參數(shù)
- 參數(shù)被放置在請(qǐng)求體中進(jìn)行傳輸
- 獲取POST參數(shù)需要使用data事件和end事件
- 使用querystring系統(tǒng)模塊將參數(shù)轉(zhuǎn)換為對(duì)象格式
// 導(dǎo)入系統(tǒng)模塊querystring用于將HTTP參數(shù)轉(zhuǎn)換為對(duì)象格式
const querystring = require('querystring');
app.on('request',(req,res) => {
let postData ='';
//監(jiān)聽(tīng)參數(shù)傳輸事件
req.on('data',(chunk)=> postData += chunk;);
//監(jiān)聽(tīng)參數(shù)傳輸完畢事件
req.on('end',() => {
//字符串轉(zhuǎn)換為對(duì)象
console.log(querystring.parse(postData));
});
});
4.4 路由
路由是指客戶(hù)端請(qǐng)求地址與服務(wù)器端程序代碼的對(duì)應(yīng)關(guān)系噪沙。簡(jiǎn)單的說(shuō),就是請(qǐng)求什么響應(yīng)什么已慢。
圖解
// 當(dāng)客戶(hù)端發(fā)來(lái)請(qǐng)求的時(shí)候
app.on('request',(req,res) => {
//獲取客戶(hù)端的請(qǐng)求路徑
let pathname = url.parse(req.url).pathname;
if(pathname == '/' || pathname == '/index'){
res.end('歡迎來(lái)到首頁(yè)');
}else if (pathname== '/list'){
res.end('歡迎來(lái)到列表頁(yè)頁(yè)');
}else {
res.end('抱歉, 您訪問(wèn)的頁(yè)面出游了');
}
});
4.5 靜態(tài)資源
服務(wù)器端不需要處理曲聂,可以直接響應(yīng)給客戶(hù)端的資源就是靜態(tài)資源霹购,例如CSS佑惠、JavaScript、image文件。
http://www.itcast.cn/images/logo.png
4.6 動(dòng)態(tài)資源
相同的請(qǐng)求地址不同的響應(yīng)資源膜楷,這種資源就是動(dòng)態(tài)資源旭咽。
http://www.itcast.cn/article?id=1
http://www.itcast.cn/article?id=2
4.7 客戶(hù)端請(qǐng)求途徑
1. GET方式
- 瀏覽器地址欄
- link標(biāo)簽的href屬性
- script標(biāo)簽的src屬性
- img標(biāo)簽的src屬性
- Form表單提交
2. POST方式
- Form表單提交
示例