久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

Node中怎么發(fā)起HTTP請(qǐng)求?本篇文章就來(lái)和大家一起探索下Node發(fā)起HTTP請(qǐng)求的6種不同方法,希望對(duì)大家有所幫助!

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

node.js極速入門(mén)課程:進(jìn)入學(xué)習(xí)

本文介紹6種在nodejs中發(fā)起HTTP請(qǐng)求的不同方法,這里我們會(huì)通過(guò)對(duì)掘金社區(qū)的板塊分類接口 的請(qǐng)求作為演示來(lái)完成這個(gè)每種不同方法的使用,當(dāng)然為了更清晰的打印出所得到的數(shù)據(jù),我們要提前安裝chalk庫(kù)來(lái)給其打印的數(shù)據(jù)加上顏色,好了,我們馬上就要開(kāi)始啦~【相關(guān)教程推薦:nodejs視頻教程、編程教學(xué)】

正文


Node.js HTTPS Module

Node.js在標(biāo)準(zhǔn)庫(kù)中帶有https模塊,所以你根本不需要引入任何庫(kù)去發(fā)起請(qǐng)求,因?yàn)閚ode.js本身就可以完成,處理一些簡(jiǎn)單的數(shù)據(jù)請(qǐng)求也是綽綽有余了。

const chalk = require("chalk") const https = require('https')  https.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', res => {     let list = [];     res.on('data', chunk => {         list.push(chunk);     });     res.on('end', () => {         const { data } = JSON.parse(Buffer.concat(list).toString());         data.forEach(item => {             console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);         })     }); }).on('error', err => {     console.log('Error: ', err.message); });
登錄后復(fù)制

從結(jié)構(gòu)上有些許復(fù)雜,因?yàn)槲覀円粋€(gè)空數(shù)組list來(lái)存儲(chǔ)請(qǐng)求數(shù)據(jù)塊chunk,然后在請(qǐng)求結(jié)束后還要通過(guò)Buffer處理數(shù)據(jù)再解析成json格式。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

Axios

相信前端的小伙伴對(duì)axios并不陌生,它是一個(gè)非常流行且受歡迎的Promise式請(qǐng)求庫(kù)。它既可以瀏覽器端使用可以在客戶端使用它,而且眾所周知,它還有著攔截器,數(shù)據(jù)自動(dòng)轉(zhuǎn)換json等十分方便的功能。

我們可以使用以下命令安裝axios:

npm i -S axios
登錄后復(fù)制

下面是我們通過(guò)axios獲取掘金板塊分類簡(jiǎn)單示例:

const chalk = require("chalk") const axios = require('axios');  axios.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(res => {     const { data } = res.data     data.forEach(item => {         console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);     }) }) .catch(err => {     console.log('Error: ', err.message); });
登錄后復(fù)制

這里axios直接用get請(qǐng)求請(qǐng)求接口,可以結(jié)構(gòu)也是promise形式的,數(shù)據(jù)自動(dòng)幫你解析成json,可以說(shuō)是非常的簡(jiǎn)潔與方便。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

Got

got聲稱是“一個(gè)人性化且功能強(qiáng)大的 Node.js HTTP 請(qǐng)求庫(kù)”,人性化在于它用了Promise式的API與對(duì)JOSN做處理配置等功能,而一些如HTTP2的支持,分頁(yè)式API以及RFC的緩存等能力是大多數(shù)請(qǐng)求庫(kù)所不具備的。

我們可以使用以下命令安裝got:

npm i -S got@10.7.0
登錄后復(fù)制

下面是我們通過(guò)got獲取掘金板塊分類簡(jiǎn)單示例:

const chalk = require("chalk") const got = require('got');  got.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', {     responseType: 'json' }) .then(res => {     const { data } = res.body     data.forEach(item => {         console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);     }) }) .catch(err => {     console.log('Error: ', err.message); });
登錄后復(fù)制

這里我們先要對(duì)請(qǐng)求接口進(jìn)行{responseType: 'json'}的配置,然后返回的數(shù)據(jù)可以在body里拿到了,也是十分的好用。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

Needle

needle是一個(gè)比較簡(jiǎn)潔小巧的請(qǐng)求庫(kù),它的形式可以是Promise的方式也可以是回調(diào)函數(shù)的方式,看自己的習(xí)慣選用,而且它的返回值會(huì)對(duì)XML與JSON自動(dòng)做出轉(zhuǎn)換,也是非常的方便。

我們可以使用以下命令安裝needle:

npm i -S needle
登錄后復(fù)制

下面是我們通過(guò)needle獲取掘金板塊分類簡(jiǎn)單示例:

const chalk = require("chalk") const needle = require('needle');  needle.get('https://api.juejin.cn/tag_api/v1/query_category_briefs', (err, res) => {     if (err) return console.log('Error: ', err.message);     const { data } = res.body     data.forEach(item => {         console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);     }) })
登錄后復(fù)制

這里我們演示的用了回調(diào)函數(shù)的方式來(lái)展示,可以看出返回有err與res,成功時(shí)err為null,成功后返回的res的body里就是所要請(qǐng)求的數(shù)據(jù),這里是幫你自動(dòng)轉(zhuǎn)化好的json格式。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

如果你想使用Promise的方式,可以這么去寫(xiě):

needle('get', 'https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(function(res) {     // ... }) .catch(function(err) {     // ... });
登錄后復(fù)制

Superagent

請(qǐng)求庫(kù)superagent發(fā)布時(shí)間可謂是相當(dāng)?shù)脑缌丝梢宰匪莸?011年,但它是漸進(jìn)式客戶端 HTTP 請(qǐng)求庫(kù),與具有相同 API 的 Node.js 模塊,支持許多高級(jí) HTTP 客戶端功能,依舊是十分的好用。

我們可以使用以下命令安裝superagent:

npm i -S superagent
登錄后復(fù)制

下面是我們通過(guò)superagent獲取掘金板塊分類簡(jiǎn)單示例:

const chalk = require("chalk") const superagent = require('superagent');  superagent.get('https://api.juejin.cn/tag_api/v1/query_category_briefs') .then(res => {     const { data } = JSON.parse(res.text)     data.forEach(item => {         console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);     }) }) .catch(err => {     console.log('Error: ', err.message); });
登錄后復(fù)制

現(xiàn)在的superagent用法與axios十分的相似,但是需要去自己把數(shù)據(jù)處理成json格式。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

Node-fetch

顧名思義,這個(gè)請(qǐng)求庫(kù)它的api與window.fetch保持了一致,也是promise式的。最近非常受歡迎,但可能最大的問(wèn)題是,它的v2與v3版差異比較大,v2保持著cjs標(biāo)準(zhǔn),而v3則用了ejs的方式,升級(jí)后可能造成一些困擾,所以為了統(tǒng)一這個(gè)標(biāo)準(zhǔn)我們這里用了2.6.7版作為演示版本。

我們可以使用以下命令安裝node-fetch:

npm i -S node-fetch@2.6.7
登錄后復(fù)制

下面是我們通過(guò)node-fetch獲取掘金板塊分類簡(jiǎn)單示例:

const chalk = require("chalk") const fetch = require("node-fetch")  fetch('https://api.juejin.cn/tag_api/v1/query_category_briefs', {     method: 'GET' }) .then(async res => {     let { data } = await res.json()     data.forEach(item => {         console.log(`${chalk.yellow.bold(item.rank)}.${chalk.green(item.category_name)}`);     }) }) .catch(err => {     console.log('Error: ', err.message); });
登錄后復(fù)制

可以看出它與window.fetch用起來(lái)完全一樣,沒(méi)有任何學(xué)習(xí)壓力。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

對(duì)比


接下來(lái)我們看一下關(guān)于這幾款請(qǐng)求庫(kù)近一年的下載量趨勢(shì)圖:

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

現(xiàn)在我們可以發(fā)現(xiàn),就下載量而言,在過(guò)去一年中,node-fetch 最受歡迎,needle 最不受歡迎。

Stars Version Unpacked Size Created Years
axios 91,642 0.26.1 398 kB 2014
got 10,736 12.0.1 244 kB 2014
needle 1,446 3.0.0 227 kB 2012
superagent 15,928 7.1.1 581 kB 2011
node-fetch 7,434 3.2.3 106 kB 2015

這里我們又統(tǒng)計(jì)了這幾個(gè)庫(kù)的其他一些數(shù)據(jù),axios的star數(shù)量可謂一騎絕塵,遠(yuǎn)遠(yuǎn)超過(guò)其他幾個(gè)庫(kù)。

結(jié)語(yǔ)

這些請(qǐng)求庫(kù),他們都做了同一件事都可以發(fā)起HTTP請(qǐng)求,或許寫(xiě)法會(huì)有些許不同,但都是條條大路通羅馬。就個(gè)人而言,也可能是經(jīng)常寫(xiě)瀏覽器端的緣故,所以是axios的忠實(shí)用戶,不管是練習(xí)還是開(kāi)發(fā)axios都是首選,當(dāng)然node-fetch也越來(lái)越收到關(guān)注,包也十分的小,練習(xí)的時(shí)候也會(huì)經(jīng)常用到,但api使用起來(lái)感覺(jué)還是沒(méi)有axios那般方便。

其實(shí)還有兩個(gè)出名的HTTP請(qǐng)求庫(kù)本文沒(méi)有提到:

一個(gè)是ky.js,它是一個(gè)非常小巧且強(qiáng)大的fetch式的請(qǐng)求庫(kù),主要為deno和現(xiàn)代瀏覽器所打造,所以暫時(shí)不參與其中的討論,感興趣的同學(xué)自己探索。

另一個(gè)就是request.js,沒(méi)有說(shuō)的原因是它在2020年的時(shí)候就已經(jīng)被完全棄用了,如果有使用過(guò)的小伙伴可以在把項(xiàng)目里的request它替換成其他的方法。

淺析Node發(fā)起HTTP請(qǐng)求的6種方法

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲福利专区| 美女尤物国产一区| 国产精品第一国产精品| 国产美女精品视频免费播放软件| 在线成人直播| 亚洲成av人片一区二区密柚| 日本а中文在线天堂| 国产成人久久精品麻豆二区| 国产一区二区精品福利地址| 国产美女高潮在线观看| 久久精品国语| 999久久久免费精品国产| 国产在线欧美| 亚洲欧美日本国产专区一区| 天堂成人国产精品一区| 免费不卡在线观看| 日本不卡的三区四区五区| 涩涩涩久久久成人精品| 国产欧美自拍| 久久久久久久欧美精品| 神马日本精品| 成人国产精选| 日韩国产一二三区| 精品九九在线| 成人精品中文字幕| 国产精品国产一区| 国产一区二区三区四区大秀| 婷婷久久免费视频| 久久久天天操| 激情综合婷婷| 欧美aaaaaa午夜精品| 亚洲欧美久久| 亚洲天堂免费电影| 午夜在线一区| 在线综合亚洲| 夜久久久久久| 亚洲精品麻豆| 午夜国产一区二区| 久久精品高清| 鲁大师影院一区二区三区| 国产精品三级| 九九精品调教| 蜜桃久久久久久| 国产美女视频一区二区| 欧美丰满日韩| 三级欧美在线一区| 免费视频久久| 91精品国产自产在线观看永久∴| 91中文字幕精品永久在线| 伊人久久大香线蕉av不卡| 亚洲深深色噜噜狠狠爱网站| 欧美日韩1区2区3区| 麻豆中文一区二区| 久久影视一区| 国产精品v一区二区三区| 成人久久久久| 日本少妇精品亚洲第一区| 国产极品一区| 色在线中文字幕| 成人日韩在线观看| 老牛国产精品一区的观看方式| 精品三级在线观看视频| 夜夜精品视频| 亚洲资源网站| 欧美一区三区| 亚洲精品小说| 电影亚洲精品噜噜在线观看| 青青草国产成人99久久| 玖玖玖国产精品| 日韩在线短视频| 99精品在线| 成人高清一区| 国产精品一页| 老鸭窝亚洲一区二区三区| 亚洲成人不卡| 欧美专区一区| 人人香蕉久久| 蜜桃久久av一区| 狠狠久久婷婷| 国产精品九九| 91精品国产91久久久久久黑人| 精品美女在线视频| 国产精品久久久久久久久久齐齐 | 荡女精品导航| 国产 日韩 欧美一区| 免费一级片91| 精品深夜福利视频| 国产视频一区免费看| 精品一区二区三区四区五区| 日韩成人精品一区二区三区 | 六月婷婷一区| 国产毛片精品| 亚洲黄页一区| 电影91久久久| 日本午夜精品久久久久| 在线综合欧美| 极品日韩av| 中文字幕人成乱码在线观看| 国产精品a级| 日韩和欧美一区二区三区| 免费日韩精品中文字幕视频在线| 成人羞羞视频播放网站| 免费亚洲婷婷| 欧美日韩一视频区二区| 石原莉奈在线亚洲二区| 久草免费在线视频| 麻豆国产精品| 国产精品亚洲四区在线观看 | 快she精品国产999| 狠狠色狠狠色综合日日tαg| 精精国产xxxx视频在线野外| 欧美丰满日韩| 日韩成人精品一区| 久久精品一区二区国产| 国产欧美三级| 欧美亚洲tv| 日韩国产欧美在线播放| 日韩精品亚洲专区在线观看| 日韩在线a电影| 亚洲免费一区二区| 夜夜精品视频| 蜜臀av一区二区在线免费观看| 夜久久久久久| 亚洲欧美日韩高清在线| 91精品高清| 美女精品在线| 国产亚洲欧美日韩精品一区二区三区 | 国产探花一区| 国产精品久久亚洲不卡| 日韩中文影院| 亚洲视频二区| 国产中文在线播放| 亚洲精品动态| 91精品婷婷色在线观看| 久久午夜视频| 欧美中文一区二区| 卡一精品卡二卡三网站乱码| 精品九九久久| 视频一区二区三区中文字幕| 成人av三级| 蜜桃久久精品一区二区| 亚洲激情中文在线| 美女精品视频在线| 狠狠爱成人网| 国产粉嫩在线观看| 最近国产精品视频| 日本成人在线网站| 亚洲欧洲日韩精品在线| 亚洲精品国产精品粉嫩| 清纯唯美亚洲综合一区| 国产欧美日韩免费观看| 欧美精品国产白浆久久久久| 国产精品久久久久77777丨| 精品视频一区二区三区四区五区 | 国产精品亚洲产品| 精品久久99| 欧美不卡视频| 一区二区三区网站| 精品九九久久| 亚洲尤物av| 久久高清免费| 激情久久久久久久| 久久久久黄色| 欧美日韩国产欧| 欧美黑人巨大videos精品| 制服诱惑一区二区| 精品视频在线观看网站| 日本一区二区三区视频在线看| 精品日本视频| 六月婷婷一区| 日韩国产激情| 久久精品九色| 视频一区国产视频| 91视频久久| 成人欧美一区二区三区的电影| 视频一区二区中文字幕| 九九综合在线| 日韩大片免费观看| 久久人人97超碰国产公开结果| 日韩电影免费在线观看| 亚洲激情五月| 青青草伊人久久| 亚洲精品黄色| 色吊丝一区二区| 蜜乳av另类精品一区二区| 国产精品综合| 亚洲精品电影| 欧美激情亚洲| 亚洲免费精品| 美腿丝袜亚洲三区| 1024精品久久久久久久久| 91精品福利观看| 国产一区二区久久久久| 丝袜美腿成人在线| 国产精品99视频| 日韩三区四区| 欧美美女一区| 国产一区二区三区不卡视频网站| 丝袜国产日韩另类美女| 亚洲精品88|