Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問題
代碼實(shí)現(xiàn)
目前學(xué)的比較簡(jiǎn)單,網(wǎng)址傳參沒有采用加密方式,我們一般用"?"來對(duì)url和參數(shù)進(jìn)行分隔,用&來對(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' }
遇到的問題:“querystring”已棄用

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

將棄用聲明這一行刪除,ctrl +s保存,這時(shí)回到summray.js就可以看到querystring不是被劃線的了
這時(shí)在該目錄下的終端輸入node summary.js運(yùn)行,打開瀏覽器,輸入網(wǎng)址http://localhost:5000/api/blog/list?id=天海一直在&pwd=123456,就可以實(shí)現(xiàn)問號(hào)后面的網(wǎng)頁參數(shù)可以被提取出來的功能了,運(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í)際解決問題借鑒評(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)白線,然后查官方文檔有這樣一句話:
querystring API 被視為舊版的。 雖然它仍在維護(hù),但是新的代碼應(yīng)該改為使用 <URLSearchParams> API。
然后點(diǎn)進(jìn)<URLSearchParams> 這個(gè)鏈接。找到了這個(gè):

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

當(dāng)然,對(duì)于這個(gè)新的node方法我也是直接復(fù)制用的,并沒有非常具體看,所以里面東西還是要大家自己在官網(wǎng)看。
總結(jié)
到此這篇關(guān)于Nodejs提取網(wǎng)址參數(shù)解決“querystring”已棄用問題的文章就介紹到這了,更多相關(guān)Nodejs解決querystring已棄用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js?readline和line-reader逐行讀取文件方法
Readline是Node的原生模塊。它是專門為從任何可讀流逐行讀取內(nèi)容而開發(fā)的。它可用于從命令行讀取數(shù)據(jù),line-reader模塊是Node.js中逐行讀取文件的開源模塊。它不是本地模塊,所以你需要使用npm(節(jié)點(diǎn)包管理器)安裝它2022-10-10
使用Koa實(shí)現(xiàn)一個(gè)獲取視頻播放地址的接口
在本節(jié)課中,我們將學(xué)習(xí)如何使用 Koa 實(shí)現(xiàn)一個(gè)獲取視頻播放地址的接口,我們將創(chuàng)建一個(gè)控制器,通過視頻 ID 獲取播放地址,并設(shè)置相應(yīng)的路由,最后,我們將使用 Postman 進(jìn)行測(cè)試,感興趣的朋友可以參考下2024-05-05
Nodejs中獲取當(dāng)前函數(shù)被調(diào)用的行數(shù)及文件名詳解
這篇文章主要給大家介紹了關(guān)于Nodejs中獲取當(dāng)前函數(shù)被調(diào)用的行數(shù)及文件名的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
利用yarn實(shí)現(xiàn)一個(gè)webpack+react種子
其實(shí)以前就寫過如何使用React-router和Webpack快速構(gòu)建一個(gè)react程序。后來發(fā)現(xiàn)版本太老,于是乎最近又重新組織了下結(jié)構(gòu),使用最近發(fā)布的yarn作為包管理工具,介紹下基本安裝步驟,有需要的朋友們下面來一起看看吧。2016-10-10
node中的__filename和__dirname的使用詳解
本文主要介紹了node中的__filename和__dirname的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
利用node.js爬取指定排名網(wǎng)站的JS引用庫詳解
最近在學(xué)習(xí)node.js爬蟲,由于 nodejs 強(qiáng)大的異步特性,讓我們可以輕松以異步高并發(fā)去爬取網(wǎng)站,下面這篇文章主要給大家介紹了關(guān)于利用node.js爬取指定排名網(wǎng)站的JS引用庫的相關(guān)資料,需要的朋友可以參考下。2017-07-07
Ubuntu 16.04 64位中搭建Node.js開發(fā)環(huán)境教程
如果想要在Ubuntu 16.04上安裝Node.js的話,這篇文章對(duì)你來說肯定很重要。Node.js從本質(zhì)上來說就是一個(gè)運(yùn)行在服務(wù)端上的封裝好了輸入輸出流的javascript程序。本文給大家詳細(xì)介紹了在Ubuntu 16.04 64位搭建Node.js開發(fā)環(huán)境的步驟,有需要的朋友們可以參考學(xué)習(xí)。2016-10-10

