Nodejs之http的表單提交
之前介紹了http模塊的請(qǐng)求與響應(yīng)的過程,也介紹了TCP協(xié)議的客戶端與服務(wù)端的數(shù)據(jù)傳輸,http協(xié)議是TCP上層協(xié)議。這里創(chuàng)建了一個(gè)簡單的web服務(wù)器,并對(duì)提交表單數(shù)據(jù)進(jìn)行處理,根據(jù)了不起的Node.js一書總結(jié)。
POST方法提交表單數(shù)據(jù)
之前也總結(jié)過,向服務(wù)器提交數(shù)據(jù)需要使用POST方法,GET方法的請(qǐng)求信息都在查詢字符串中,沒有請(qǐng)求體,而POST方法的傳輸?shù)臄?shù)據(jù)都在請(qǐng)求體中,故提交表單數(shù)據(jù)時(shí)需要使用POST方法。
req是請(qǐng)求信息,req.url表示請(qǐng)求的地址,當(dāng)服務(wù)器運(yùn)行之后,req請(qǐng)求的網(wǎng)址為127.0.0.1:3000,此時(shí)req.url為‘/',則返回的是一串表單數(shù)據(jù),在表單數(shù)據(jù)中設(shè)置了method是post,action是‘/url',表面提交數(shù)據(jù)的方式是POST,將數(shù)據(jù)提交的地址為127.0.0.1:3000/url,而提交之后要獲取新的頁面即127.0.0.1:3000/url,此時(shí)req.url為‘/url',故顯示的另一個(gè)頁面。
//提交表單數(shù)據(jù) var http=require('http'); var querystring=require('querystring'); var server=http.createServer(function (req,res) { //req.url不同則返回的頁面不同 if('/'==req.url){ res.writeHead(200,{'Content-Type':'text/html'}); res.write([ '<form method="post" action="/url">', '<h1>My Form</h1>', '<fieldset>', '<label>Personal Information</label>', '<p>What is your name?</p>', '<input type="text" name="name">', '<button>submit</button>', '</form>' ].join('')); res.end(); }else if('/url'==req.url&&req.method=='POST'){ var reqBody=''; req.on('data',function (data) { reqBody += data; }); req.on('end',function () {//用于數(shù)據(jù)接收完成后再獲取 res.writeHead(200,{'Content-Type':'text/html'}); res.write('you have sent a '+req.method+' request\n'); res.write('<p>Content-Type:'+req.headers['content-type']+'</p>' +'<p>Data:your name is '+querystring.parse(reqBody).name+'</p>'); res.end(); }) }else{ res.writeHead(404); res.write('Not Found'); res.end(); } }).listen(3000,function () { console.log('server is listening 3000'); });
提交之后,需要獲取請(qǐng)求信息的請(qǐng)求體,因?yàn)镻OST方法中信息都在請(qǐng)求體中,用req綁定data事件獲取數(shù)據(jù),這里需要注意的是必須得在數(shù)據(jù)接收完成后再對(duì)數(shù)據(jù)進(jìn)行操作,即必須綁定end事件監(jiān)聽請(qǐng)求信息是否傳輸完成。
querystring是查詢字符串模塊,用于對(duì)查詢字符串的解析,parse方法將查詢字符串解析成一個(gè)對(duì)象。在git中運(yùn)行服務(wù)器,得到頁面是這樣的:
提交數(shù)據(jù)后:
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
npm?install安裝過程報(bào)錯(cuò)的實(shí)用解決辦法
最近做項(xiàng)目遇到npm install 的問題,下面這篇文章主要給大家介紹了關(guān)于npm?install安裝過程報(bào)錯(cuò)的實(shí)用解決辦法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06nodemon實(shí)現(xiàn)Typescript項(xiàng)目熱更新的示例代碼
這篇文章主要介紹了nodemon實(shí)現(xiàn)Typescript項(xiàng)目熱更新的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Node.js中常用設(shè)計(jì)模式的使用方法總結(jié)
設(shè)計(jì)模式是由經(jīng)驗(yàn)豐富的程序員在日積月累中抽象出的用以解決通用問題的可復(fù)用解決方案,它提供了標(biāo)準(zhǔn)化的代碼設(shè)計(jì)方案提升開發(fā)體驗(yàn),本文主要來和大家討論一下Node.js中設(shè)計(jì)模式的重要性并提供一些代碼示例,感興趣的可以了解下2023-10-10node.js 和HTML5開發(fā)本地桌面應(yīng)用程序
這篇文章主要介紹了node.js 和HTML5開發(fā)本地桌面應(yīng)用程序的相關(guān)資料,需要的朋友可以參考下2016-12-12Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例
這篇文章主要介紹了Nodejs中調(diào)用系統(tǒng)命令、Shell腳本和Python腳本的方法和實(shí)例,本文給出了利用子進(jìn)程調(diào)用系統(tǒng)命令、執(zhí)行系統(tǒng)命令、調(diào)用傳參數(shù)的shell腳本、調(diào)用python腳本的例子,需要的朋友可以參考下2015-01-01手把手教你更優(yōu)雅的修改node_modules里的代碼
這篇文章主要給大家介紹了關(guān)于如何更優(yōu)雅的修改node_modules里的代碼的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-02-02詳解node.js平臺(tái)下Express的session與cookie模塊包的配置
本篇文章主要介紹了詳解node.js平臺(tái)下Express的session與cookie模塊包的配置,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04