Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問題
代碼實現(xiàn)
目前學(xué)的比較簡單,網(wǎng)址傳參沒有采用加密方式,我們一般用"?"來對url和參數(shù)進(jìn)行分隔,用&來對每個參數(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; //請求的路由
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
請求得到的path為:/api/blog/list
請求得到的query為:{ id: '天海一直在', pwd: '123456' }
遇到的問題:“querystring”已棄用

在引用querystring時發(fā)現(xiàn)該方法被劃線了,原因是封裝的querystring被做了棄用標(biāo)識,表示后續(xù)不會對此封裝函數(shù)進(jìn)行更新和維護(hù),過一段時間可能會被刪除,這就導(dǎo)致不能正常對url進(jìn)行切片,這時只需要按住ctrl點擊被劃掉的querystring,進(jìn)入js封裝的原代碼。

將棄用聲明這一行刪除,ctrl +s保存,這時回到summray.js就可以看到querystring不是被劃線的了
這時在該目錄下的終端輸入node summary.js運行,打開瀏覽器,輸入網(wǎng)址http://localhost:5000/api/blog/list?id=天海一直在&pwd=123456,就可以實現(xiàn)問號后面的網(wǎng)頁參數(shù)可以被提取出來的功能了,運行的返回結(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)容
實際解決問題借鑒評論區(qū)老哥的方法就是將querystring替換為querystringify
先npm i querystringify
再導(dǎo)入:const qs = require('querystringify')
最后使用:const body = qs.parse(str)即可
補(bǔ)充:node.js 解決querystring棄用對post請求分割字符串的影響

當(dāng)用這個方法時出現(xiàn)白線,然后查官方文檔有這樣一句話:
querystring API 被視為舊版的。 雖然它仍在維護(hù),但是新的代碼應(yīng)該改為使用 <URLSearchParams> API。
然后點進(jìn)<URLSearchParams> 這個鏈接。找到了這個:

但有個問題:就是post請求連接所獲得的字符串并不是上面URL()中的詳細(xì)地址 ,就沒法用這個方法。
解決:在連接post請求所獲得的字符串前面再加上'http://xxxx/?’那個協(xié)議也是根據(jù)自己的情況而定。

當(dāng)然,對于這個新的node方法我也是直接復(fù)制用的,并沒有非常具體看,所以里面東西還是要大家自己在官網(wǎng)看。
總結(jié)
到此這篇關(guān)于Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問題的文章就介紹到這了,更多相關(guān)Nodejs解決querystring已棄用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js使用第三方插件nodemailer實現(xiàn)郵件發(fā)送示例
這篇文章主要為大家介紹了Node.js使用第三方插件nodemailer實現(xiàn)郵件發(fā)送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
在Nodejs中實現(xiàn)一個緩存系統(tǒng)的方法詳解
在數(shù)據(jù)庫查詢遇到瓶頸時,我們通??梢圆捎镁彺鎭硖嵘樵兯俣?同時緩解數(shù)據(jù)庫壓力,在一些簡單場景中,我們也可以自己實現(xiàn)一個緩存系統(tǒng),避免使用額外的緩存中間件,這篇文章將帶你一步步實現(xiàn)一個完善的緩存系統(tǒng),需要的朋友可以參考下2024-03-03
node.js中的模塊化標(biāo)準(zhǔn)CommonJS與自定義模塊
這篇文章介紹了node.js中的模塊化標(biāo)準(zhǔn)CommonJS與自定義模塊,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
nodejs異步編程基礎(chǔ)之回調(diào)函數(shù)用法分析
這篇文章主要介紹了nodejs異步編程基礎(chǔ)之回調(diào)函數(shù)用法,結(jié)合具體實例形式分析了阻塞與非阻塞形式下回調(diào)函數(shù)具體功能、使用技巧,需要的朋友可以參考下2018-12-12

