HPPT請求與響應處理
阿新 • • 發佈:2021-11-28
GET請求引數
引數被放置在瀏覽器位址列中,例如:http://localhost:3000/?name=zhangsan&age=20.?後面是請求引數,也就是額外攜帶的資料。
在Node.js提供了內建模組,可以通過內建模組中的方法,來處理這個請求引數。
引入內建模組url(這個模組用來處理URL請求地址):
const url = require('url');
url這個模組下面有一個parse方法,用來解析url。
//parse方法最後會返回一個物件,會把url裡面的各個部分都放到物件的一個 //屬性裡面。 url.parse(req.url,true)
parse裡面有兩個引數,第一個引數是要解析的url地址,第二個引數是將'查詢引數'解析成物件形式。
- //url裡面的屬性: //search:查詢引數 //query:和search差不太多,區別是search後面有?,query後面沒有? //pathname:請求地址
- 引數被放置在瀏覽器位址列中
- 獲取get引數使用req.url
POST請求引數
<form method="post" action="http://localhost:3000"> <input type="text" name="username"> <input type="password" name="password"> <input type='submit'> </form>
post引數是通過事件的方式接收的,data事件和end事件。post引數理論上資料量可以是無限的,作為伺服器來講為了減輕壓力,post引數不是一次就接收完的。比如說傳遞一個100兆的資料,可能分10次接收,每一次接收10兆。當有請求引數傳遞的時候就會觸發data事件,當請求引數傳遞完成時會觸發end事件。
const http = require('http'); const app = http.createServer();
//處理伺服器端接收到的字元串
const querystring = require('querystring'); app.on('request',(req,res)=>{//由於post引數不是一次傳遞完的,所以需要宣告一個變數,當觸發data時將傳遞過來的引數與宣告的變數進行拼接。
let postParams = ''; req.on('data',params=>{
postParams+=params;
}) })
//當end事件觸發時,輸出引數。
req.on('end',()=>{
//使用querystring下的parse方法,將postParams轉換為物件
console.log(querystring.parse(postParams));
})
res.end('ok')
})
- post引數被放置在請求體中進行傳輸
- 獲取post引數需要使用data事件和end事件
- 獲取到的post引數是一個字串的格式,使用內建模組querystring下的parse方法把引數轉換為物件格式