首頁 >web前端 >前端問答 >node.js get與post的差別是什麼

node.js get與post的差別是什麼

青灯夜游
青灯夜游原創
2022-07-18 17:47:466483瀏覽

區別:1、GET請求傳參通過URL,而POST請求傳參透過HTTP上行封包;2、POST請求的安全性比GET請求高,GET請求的參數在URL中,可見的,因此GET請求不安全;3、GET有請求緩存,而POST沒有;4、GET用於取出數據,而POST用於提交數據;5、GET傳輸的數據量有限制,而POST傳輸的數據量沒有限制;6、GET請求對資料類型有限制,而POST請求沒有限制。

node.js get與post的差別是什麼

本教學操作環境:windows7系統、nodejs16版,DELL G3電腦。

node是運行在服務端的javaScript語言,用戶向伺服器發送請求就要用到get/post方法。

get和post實作的功能基本上相同,都是客戶端提交資料給伺服器端,只是實作的機制不同而已。

GET請求

GET請求是把參數資料佇列加入表單的action屬性所指向的url中,值和表單裡的name屬性一一對應,url中可以看到。透過url模組中的parse()來處理發過來的req.url。

我們透過form表單來傳送get請求:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>get</title>
  </head>
  <body>
    <form action="http://localhost:8080/index" method="get">
      用户:<label>
      <input type="text" name="user" value="">
       </label><br>
      密码:<label>
      <input type="password" name="pass" value="">
       </label><br>
      <input type="submit" value="提交">
    </form>
  </body>
</html>

對應的node.js程式碼如下:

const http=require(&#39;http&#39;);
const urlLib=require(&#39;url&#39;);

http.createServer(function (req, res){
    //req获取前台请求数据
    //req.url的值是:/index?user=Kity&pass=32412
 var obj=urlLib.parse(req.url, true);
  var url=obj.pathname;//url的值是:"/index"
  var GET=obj.query; //GET的值是:{user:&#39;Kity&#39;,pass:&#39;232312&#39;}
  console.log(url, GET);

  res.write(&#39;success&#39;);
  res.end();
}).listen(8080);

執行node.js程式碼後結果如下:

liyabin@liyabin-ThinkPad-Edge-E430:~/下载/node$ node server3.js
/index { user: &#39;Kity&#39;, pass: &#39;231312&#39; }

POST請求

POST請求的內容全部的都在請求體中,所有node.js 預設是不會解析請求體的。透過querystring模組中的parse()來處理post請求。 post傳輸的資料量比get大很多,不會一次傳輸完畢,需分段到達。

發送post請求的表單只需把上面的method="get"改成method="post"即可。

const http=require(&#39;http&#39;);
const querystring=require(&#39;querystring&#39;);

http.createServer(function (req, res){
  //POST——req

  var str = &#39;&#39;;   //接收数据

  //data——有一段数据到达(很多次)

  req.on(&#39;data&#39;, function (data){
    let i = 0;
    console.log(`第${i++}次收到数据`);
    str += data;
  });
  //end——数据全部到达(一次)
  req.on(&#39;end&#39;, function (){
    let POST = querystring.parse(str);
    console.log(POST);
    res.write("success");
    res.end();
  });
}).listen(8080);

運行node程式碼後的結果如下:

liyabin@liyabin-ThinkPad-Edge-E430:~/下载/node$ node server.js
第0次收到数据
{ user: &#39;fdf&#39;, pass: &#39;21341412&#39; }

#get 與post 的差異

node.js get與post的差別是什麼

##GET和POST請求的優缺點:

(1) get傳輸的資料量非常小,一般在2k左右,但是執行效率比post好;

(2)post傳輸的資料量較大,它是等待伺服器來讀取數據,不過也有位元組限制,這是為了防止對伺服器用大量資料進行攻擊,微軟對用Request.Form( )接收的最大資料有限制,IIS4為80kB,IIS5為100kB;

(3)form表單提交一般用post,因為如果用get提交數據,使用者名稱和密碼會出現在url上,如果頁面可以被快取或其他使用者可以存取客戶端,就可以從歷史記錄中看到使用者名稱和密碼,帶來資料的安全性問題。

更多node相關知識,請造訪:

nodejs 教學

以上是node.js get與post的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn