Express全系列教程之(四):獲取Post參數(shù)的兩種方式

一蝶棋、關于POST請求

post方法作為http請求很重要的一部分,幾乎所有的網(wǎng)站都有用到它忽妒,與get不同玩裙,post請求更像是在服務器上做修改操作,它一般用于數(shù)據(jù)資源的更新段直。

相比于get請求吃溅,post所請求的數(shù)據(jù)會更加安全。上一章中我們發(fā)現(xiàn)get請求會在地址欄顯示輸入的用戶名和密碼(有中文時會轉化為BASE64加密)鸯檬,而post請求則會將數(shù)據(jù)放入http包的包體中决侈,這使得別人無法直接看到用戶名和密碼!

二喧务、Express如何設置POST請求

1.我們的知道赖歌,首先我們得知道在form表單進行post請求,enctype屬性一般設置為“application/x-www-form-urlencoded”功茴,如果設置成multipart/form-data庐冯,則多用于文件上傳,如下:

<form action="#" method="post" enctype="application/x-www-form-urlencoded">

</form>

之后坎穿,我們可以使用npm提供的body-parser或者connect-multiparty來獲取post數(shù)據(jù)展父。我也會把兩種方式都進行演示:

(1)、body-parser

Express中默認都使用body-parser作為請求體解析post數(shù)據(jù)赁酝,這個模塊也能解析:JSON犯祠、Raw、文本酌呆、URL-encoded格式的請求體衡载。

首先在項目目錄安裝body-parser:

cnpm install body-parser --save

在項目app.js中,引用和設置該模塊:

const bodyParser=require("body-parser");

// 解析以 application/json 和 application/x-www-form-urlencoded 提交的數(shù)據(jù)

var jsonParser = bodyParser.json();

var urlencodedParser = bodyParser.urlencoded({ extended: false });

bodyParser.json()很明顯是將json作為消息主題,再且常見的語言和瀏覽器大都支持json規(guī)范隙袁,使得json處理起來不會遇上兼容性問題痰娱。

application/x-www-form-urlencoded:

如果form表單不設置enctype屬性,那么他默認就會是這種菩收。

之后獲取數(shù)據(jù):

app.post("/",urlencodedParser,function(req,res){

? ? res.send(req.body);

? ? });

在中間添加urlencodedParser梨睁,請求是依然使用req.body獲取數(shù)據(jù)。

下面是一個完整的實例:

index.html:

<!DOCTYPE html>

<html>

? ? <head>

? ? ? ? <meta charset="utf-8">

? ? ? ? <title></title>

? ? </head>

? ??<body>

? ? ? ? <form action="http://localhost:8080/" method="post" enctype="application/x-www-form-urlencoded">

? ? ? ? ? ? 用戶:

? ? ? ? ? ? <input type="text" name="user" id="user" placeholder="用戶名"><br>

? ? ? ? ? ? 密碼:

? ? ? ? ? ? <input type="password" name="password" id="password" placeholder="密碼"/><br>

? ? ? ? ? ? <input type="submit" value="提交"/>

? ? ? ? </form>

? ? </body>

</html>

app.js:

const express=require("express");

const bodyParser=require("body-parser");

var app=express();

// 解析application/json數(shù)據(jù)

var jsonParser = bodyParser.json();

// 解析application/x-www-form-urlencoded數(shù)據(jù)

var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.post('/',urlencodedParser,function(req,res){

res.send(req.body);

});

app.listen(8080);

(2)娜饵、connect-multiparty

雖然connect-multiparty多用于文件上傳坡贺,但也可以訪問到post請求的數(shù)據(jù),先安裝

cnpm install connect-multiparty --save

再引入和構建函數(shù):

const multipart = require('connect-multiparty');

var multipartMiddleware = multipart();

同樣我們也采用req.body來獲取參數(shù):

app.post('/',multipartMiddleware,function(req,res){

res.send(req.body);

});

完整的:

const express=require("express");

const multipart = require('connect-multiparty');

var multipartMiddleware = multipart();

var app=express();

app.post('/',multipartMiddleware,function(req,res){

res.send(req.body);

});

app.listen(8080);

相比于body-parser,代碼量似乎更少一些遍坟,但我還是建議使用body-parser拳亿,根據(jù)官方說法,他會在服務器上創(chuàng)建臨時文件愿伴,并且永遠不會去清理它們肺魁,這會相當兩會系統(tǒng)資源,所以不到萬不得已請不要去使用它隔节。

總結

post數(shù)據(jù)在網(wǎng)頁開發(fā)時經(jīng)常使用鹅经,請務必掌握它,只有這樣網(wǎng)頁的交互設計才能夠做到游刃有余怎诫,今天就到這里瘾晃,也希望大家以后多多支持。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末幻妓,一起剝皮案震驚了整個濱河市酗捌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涌哲,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚镰,死亡現(xiàn)場離奇詭異阀圾,居然都是意外死亡,警方通過查閱死者的電腦和手機狗唉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門初烘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人分俯,你說我怎么就攤上這事肾筐。” “怎么了缸剪?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵吗铐,是天一觀的道長。 經(jīng)常有香客問我杏节,道長唬渗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任奋渔,我火速辦了婚禮镊逝,結果婚禮上,老公的妹妹穿的比我還像新娘嫉鲸。我一直安慰自己撑蒜,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著座菠,像睡著了一般狸眼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辈灼,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天份企,我揣著相機與錄音,去河邊找鬼巡莹。 笑死司志,一個胖子當著我的面吹牛,可吹牛的內容都是我干的降宅。 我是一名探鬼主播骂远,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腰根!你這毒婦竟也來了激才?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤额嘿,失蹤者是張志新(化名)和其女友劉穎瘸恼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體册养,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡东帅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了球拦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片靠闭。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坎炼,靈堂內的尸體忽然破棺而出愧膀,到底是詐尸還是另有隱情,我是刑警寧澤谣光,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布檩淋,位于F島的核電站,受9級特大地震影響抢肛,放射性物質發(fā)生泄漏狼钮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一捡絮、第九天 我趴在偏房一處隱蔽的房頂上張望熬芜。 院中可真熱鬧,春花似錦福稳、人聲如沸涎拉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鼓拧。三九已至半火,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間季俩,已是汗流浹背钮糖。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酌住,地道東北人店归。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像酪我,于是被迫代替她去往敵國和親消痛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容