1. 程式人生 > 其它 >HPPT請求與響應處理

HPPT請求與響應處理

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方法把引數轉換為物件格式