Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問(wèn)題
代碼實(shí)現(xiàn)
目前學(xué)的比較簡(jiǎn)單,網(wǎng)址傳參沒(méi)有采用加密方式,我們一般用"?"來(lái)對(duì)url和參數(shù)進(jìn)行分隔,用&來(lái)對(duì)每個(gè)參數(shù)進(jìn)行分隔,新建了summary.js代碼如下
const http = require('http'); const querystring = require('querystring'); const server = http.createServer((req, res)=>{ const method = req.method; //獲取方法 const url = req.url; //請(qǐng)求的路由 const path = url.split('?')[0]; const querystring = require('querystring'); const query = querystring.parse(url.split('?')[1]); console.log('method',method); console.log('url',url); console.log('path',path); console.log('query',query); }); server.listen(5000, () =>{ console.log('server running at port 5000'); });
其中,
第6行的常量path就為網(wǎng)址中"?"前的路徑內(nèi)容
第8行的常量query就為網(wǎng)址中"?"后的參數(shù)內(nèi)容
例如localhost:5000/api/blog/list?id=天海一直在&pwd=123456
請(qǐng)求得到的path為:/api/blog/list
請(qǐng)求得到的query為:{ id: '天海一直在', pwd: '123456' }
遇到的問(wèn)題:“querystring”已棄用
在引用querystring時(shí)發(fā)現(xiàn)該方法被劃線(xiàn)了,原因是封裝的querystring被做了棄用標(biāo)識(shí),表示后續(xù)不會(huì)對(duì)此封裝函數(shù)進(jìn)行更新和維護(hù),過(guò)一段時(shí)間可能會(huì)被刪除,這就導(dǎo)致不能正常對(duì)url進(jìn)行切片,這時(shí)只需要按住ctrl點(diǎn)擊被劃掉的querystring,進(jìn)入js封裝的原代碼。
將棄用聲明這一行刪除,ctrl +s保存,這時(shí)回到summray.js就可以看到querystring不是被劃線(xiàn)的了
這時(shí)在該目錄下的終端輸入node summary.js
運(yùn)行,打開(kāi)瀏覽器,輸入網(wǎng)址http://localhost:5000/api/blog/list?id=天海一直在&pwd=123456,就可以實(shí)現(xiàn)問(wèn)號(hào)后面的網(wǎng)頁(yè)參數(shù)可以被提取出來(lái)的功能了,運(yùn)行的返回結(jié)果如下:
PS D:\文件\Nodejs學(xué)習(xí)> node summray.js
server running at port 5000
method GET
url /api/blog/list?id=%E5%A4%A9%E6%B5%B7%E4%B8%80%E7%9B%B4%E5%9C%A8&pwd=123456
path /api/blog/list
query [Object: null prototype] { id: '天海一直在', pwd: '123456' }
2022/3/27后加入內(nèi)容
實(shí)際解決問(wèn)題借鑒評(píng)論區(qū)老哥的方法就是將querystring替換為querystringify
先npm i querystringify
再導(dǎo)入:const qs = require('querystringify')
最后使用:const body = qs.parse(str)即可
補(bǔ)充:node.js 解決querystring棄用對(duì)post請(qǐng)求分割字符串的影響
當(dāng)用這個(gè)方法時(shí)出現(xiàn)白線(xiàn),然后查官方文檔有這樣一句話(huà):
querystring
API 被視為舊版的。 雖然它仍在維護(hù),但是新的代碼應(yīng)該改為使用 <URLSearchParams> API。
然后點(diǎn)進(jìn)<URLSearchParams> 這個(gè)鏈接。找到了這個(gè):
但有個(gè)問(wèn)題:就是post請(qǐng)求連接所獲得的字符串并不是上面URL()中的詳細(xì)地址 ,就沒(méi)法用這個(gè)方法。
解決:在連接post請(qǐng)求所獲得的字符串前面再加上'http://xxxx/?’那個(gè)協(xié)議也是根據(jù)自己的情況而定。
當(dāng)然,對(duì)于這個(gè)新的node方法我也是直接復(fù)制用的,并沒(méi)有非常具體看,所以里面東西還是要大家自己在官網(wǎng)看。
總結(jié)
到此這篇關(guān)于Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問(wèn)題的文章就介紹到這了,更多相關(guān)Nodejs解決querystring已棄用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js使用第三方插件nodemailer實(shí)現(xiàn)郵件發(fā)送示例
這篇文章主要為大家介紹了Node.js使用第三方插件nodemailer實(shí)現(xiàn)郵件發(fā)送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11在Nodejs中實(shí)現(xiàn)一個(gè)緩存系統(tǒng)的方法詳解
在數(shù)據(jù)庫(kù)查詢(xún)遇到瓶頸時(shí),我們通??梢圆捎镁彺鎭?lái)提升查詢(xún)速度,同時(shí)緩解數(shù)據(jù)庫(kù)壓力,在一些簡(jiǎn)單場(chǎng)景中,我們也可以自己實(shí)現(xiàn)一個(gè)緩存系統(tǒng),避免使用額外的緩存中間件,這篇文章將帶你一步步實(shí)現(xiàn)一個(gè)完善的緩存系統(tǒng),需要的朋友可以參考下2024-03-03在Node.js中實(shí)現(xiàn)獲取用戶(hù)頻道信息的功能
在構(gòu)建社交或視頻分享平臺(tái)時(shí),允許用戶(hù)查看其他用戶(hù)的頻道信息是一個(gè)基本需求,本文將介紹如何在Node.js應(yīng)用中,使用Express框架和Mongoose庫(kù)來(lái)實(shí)現(xiàn)這一功能,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-04-04node.js中的模塊化標(biāo)準(zhǔn)CommonJS與自定義模塊
這篇文章介紹了node.js中的模塊化標(biāo)準(zhǔn)CommonJS與自定義模塊,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06Nodejs監(jiān)聽(tīng)日志文件的變化的過(guò)程解析
最近有在做日志文件的分析,其中有一個(gè)需求:A服務(wù)器項(xiàng)目需要用Nodejs監(jiān)聽(tīng)日志文件的變化,當(dāng)項(xiàng)目產(chǎn)生了新的日志信息,將新的部分通過(guò)socket傳輸?shù)紹服務(wù)器項(xiàng)目,本文重點(diǎn)給大家介紹Nodejs監(jiān)聽(tīng)日志文件的變化的相關(guān)知識(shí),一起看看吧2019-08-08nodejs異步編程基礎(chǔ)之回調(diào)函數(shù)用法分析
這篇文章主要介紹了nodejs異步編程基礎(chǔ)之回調(diào)函數(shù)用法,結(jié)合具體實(shí)例形式分析了阻塞與非阻塞形式下回調(diào)函數(shù)具體功能、使用技巧,需要的朋友可以參考下2018-12-12node實(shí)現(xiàn)的爬蟲(chóng)功能示例
這篇文章主要介紹了node實(shí)現(xiàn)的爬蟲(chóng)功能,結(jié)合實(shí)例形式分析了nodejs實(shí)現(xiàn)爬蟲(chóng)功能的步驟與相關(guān)操作技巧,需要的朋友可以參考下2018-05-05