亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解在Node.js中發起HTTP請求的5種方法

2024-05-06 16:47:41
字體:
來源:轉載
供稿:網友

創建HTTP請求使現代編程語言的核心功能之一,也是很多程序員在接觸到新的開發環境時最先遇到的技術之一。在Node.js中有相當多的解決方案,其中有語言內置功能,也有開源社區貢獻的開發庫。下面咱們來看一下比較流行的幾種方式。

在開始之前,請先在自己的計算機上安裝最新版的node.js和npm。

HTTP - 標準庫

首先是標準庫中默認的 HTTP 模塊。這個模塊無需安裝依賴外部即可使用,做到了真正的即插即用。缺點是與其他解決方案相比,用起來不是那么友好。

下面的代碼將向NASA的API發送一個 GET 請求,并輸出當天的天文照片的URL,以及它的注解:

const https = require('https'); https.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', (resp) => { let data = '';  // A chunk of data has been recieved. resp.on('data', (chunk) => {  data += chunk; });  // The whole response has been received. Print out the result. resp.on('end', () => {  console.log(JSON.parse(data).explanation); }); }).on("error", (err) => { console.log("Error: " + err.message);});

HTTP 和 HTTPS 模塊提供的大多數功能是相當有限的。你需要以區塊為單位接收響應數據,而不是只提供一個回調函數,以便在收到所有數據后就立即執行。如果它是JSON格式你還需要進行手動解析。盡管工作量不大,但是它仍然會帶來一些不必要的操作。

另一個麻煩是, HTTP 和 HTTPS 協議分屬兩個模塊,因此如果我們使用的API是通過 HTTPS 協議進行通信,則需要 HTTPS 模塊。

如果你不想向代碼庫中添加太多的依賴項或希望使用其底層的功能, 那么可能需要花費更多的精力來獲取所需的數據, 盡管如此,但是它仍然是一個很好的工具。

Request

Request 是一個簡化的http客戶端,它和Python的request庫很像。這個庫比默認的 http 模塊更好用,多年來被開源社區作為開發首選。

自從我開始使用Node.js就一直在用,他對快速完成開發任務很有幫助。與 http 模塊不同的是,你必須使用npm來安裝它。

在終端下進入到你想要代碼被下載的目錄中,運行以下命令:

npm install request@2.81.0

可以看到,不需要寫太多代碼就能完成前面的功能:

const request = require('request'); request('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', { json: true }, (err, res, body) => { if (err) { return console.log(err); } console.log(body.url); console.log(body.explanation);});

如果你想要一個使用正常方式處理HTTP請求的苦,那么Request是一個很好的選擇。如果你想使用Promises,也可以簽出request-promise庫。

Axios

Axios 是一個基于promise的HTTP客戶端,可以用于瀏覽器和Node.js。在處理需要更復雜的事件鏈的代碼時,使用Promises具有很大的優勢。 編寫異步代碼可能會令人困惑,而Promises是這個問題的幾種解決方案之一。 它們甚至被用在其它語言中,比如Swift。

使用npm安裝Axios,在終端中輸入以下命令:

npm install axios@0.16.2

下面的代碼實現相同的功能,得到URL并解釋當天的天文學圖片。

const axios = require('axios'); axios.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY') .then(response => {  console.log(response.data.url);  console.log(response.data.explanation); }) .catch(error => {  console.log(error); });

默認情況下,Axios可以解析JSON響應,非常方便。你也可以看到錯誤處理是由 .catch() 完成的,現在我們都在使用 promises。

你甚至可以通過 axios.all 發起多個并發請求,比如說你想一次性得到兩天的天文圖片可以這樣做:

var axios = require('axios'); axios.all([ axios.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=2017-08-03'), axios.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=2017-08-02')]).then(axios.spread((response1, response2) => { console.log(response1.data.url); console.log(response2.data.url);})).catch(error => { console.log(error);});

異步代碼很容易地變得十分復雜并且不容易處理, 和 it 解決這個問題的方式可能會讓你的生活更容易從長遠來看。Axios很輕松的解決了這個問題,從長遠看來可以使你的開發工作變得輕松。

SuperAgent

與Axios類似, SuperAgent 是另一個流行的庫,主要用于瀏覽器中的Ajax請求,但也適用于Node.js。使用以下命令安裝SuperAgent :

npm install superagent@3.5.2

SuperAgent最酷的地方是能進行鏈式調用,你可以把其它函數鏈到像 query() 這樣的請求上,并且添加參數。在前面的例子中我們都是手動添加它們。請注意 SuperAgent 是怎樣提供這種功能的:

const superagent = require('superagent'); superagent.get('https://api.nasa.gov/planetary/apod').query({ api_key: 'DEMO_KEY', date: '2017-08-02' }).end((err, res) => { if (err) { return console.log(err); } console.log(res.body.url); console.log(res.body.explanation);});

和axios一樣,你也不用自己解析去JSON響應,這非???。

Got

如果你想用一個更輕量級的庫,Got是另外一個選擇。它也可用于Twilio Functions。

再來一遍,實用npm安裝Got:

npm install got@7.1.0

和Axios一樣,Got也能同Promises一起很好的工作。下面的代碼做的事情和前面的例子一樣:

const got = require('got'); got('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY', { json: true }).then(response => { console.log(response.body.url); console.log(response.body.explanation);}).catch(error => { console.log(error.response.body);});

如果你想要一個不像Request那樣臃腫的輕量級的庫,使用Got就對了。

最后的想法

以上并不是全部的解決方案,不過看到了這里,你知道了在Node.js中一些流行的HTTP庫中的基本功能是怎樣工作的。還有一些庫,例如node-fetch將瀏覽器的獲?。╢etch)功能移植到后端。在其他語言中也有各種類似的庫解決這個問題,比如 Python 和 Ruby 。

5 Ways to Make HTTP Requests in Node.js 原文鏈接:https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av资源在线播放| 亚洲精品中文字幕有码专区| 成人福利视频在线观看| 国产精品一久久香蕉国产线看观看| 热久久免费国产视频| 亚洲欧美激情精品一区二区| 北条麻妃一区二区三区中文字幕| 亚洲精品网址在线观看| 亚洲大胆人体av| 国产精品丝袜视频| 人人爽久久涩噜噜噜网站| 国产精品久久99久久| 亚洲级视频在线观看免费1级| 亚洲在线观看视频| 国产综合视频在线观看| 国产日韩在线一区| 国产精品久久久久久久久久三级| 亚洲精品动漫100p| 日韩av快播网址| 欧洲成人免费aa| 久久香蕉精品香蕉| 日韩有码在线观看| 久久成人av网站| 日韩www在线| 午夜精品久久久久久99热软件| 国产精品自拍偷拍| 欧美电影免费观看大全| 亚洲国产精品va在看黑人| 亚洲精品日韩久久久| 成人黄色大片在线免费观看| 国产欧美欧洲在线观看| www.亚洲人.com| 国产精品高潮视频| 在线亚洲午夜片av大片| 国产一区视频在线播放| 国产成人avxxxxx在线看| 中文精品99久久国产香蕉| 91久久精品久久国产性色也91| 97国产suv精品一区二区62| 成人激情视频小说免费下载| 亚洲国产成人久久| 庆余年2免费日韩剧观看大牛| 欧美电影《睫毛膏》| 精品亚洲一区二区三区| 亚洲欧美日韩爽爽影院| 色老头一区二区三区| 97热精品视频官网| 国产成人精品一区二区三区| 色噜噜国产精品视频一区二区| 91久久精品美女高潮| 亚洲精品福利资源站| 欧美激情区在线播放| 国产日韩欧美黄色| 美日韩精品免费观看视频| 日韩精品欧美国产精品忘忧草| 久久激情五月丁香伊人| 中文字幕综合一区| 精品无人区乱码1区2区3区在线| 国外成人免费在线播放| 日韩在线观看免费| 精品久久中文字幕| 日韩久久精品电影| 国产91|九色| 9.1国产丝袜在线观看| 日韩av在线免费看| 怡红院精品视频| 欧美日韩国产一中文字不卡| 久久精品久久久久电影| 91精品国产色综合久久不卡98口| 国产精品久久久999| 国产一区二中文字幕在线看| 欧美精品videos另类日本| 国产成人精品日本亚洲专区61| 综合av色偷偷网| 亚洲成年网站在线观看| 国产香蕉97碰碰久久人人| 国产九九精品视频| 亚洲人成欧美中文字幕| 国产日韩亚洲欧美| 午夜精品久久久久久久男人的天堂| 国产日本欧美一区二区三区在线| 91国自产精品中文字幕亚洲| 久久国产精品首页| 国产99久久精品一区二区 夜夜躁日日躁| 久久免费视频这里只有精品| 国产日韩精品在线播放| 欧美色道久久88综合亚洲精品| 欧美三级欧美成人高清www| 狠狠做深爱婷婷久久综合一区| 亚洲综合在线小说| 欧美人在线视频| 亚洲精品91美女久久久久久久| 国产人妖伪娘一区91| 亚洲国产又黄又爽女人高潮的| 久久精品色欧美aⅴ一区二区| 中文字幕欧美日韩在线| 亚洲国产中文字幕久久网| 精品视频久久久久久| 一区二区av在线| 亚洲最大福利网| 亚洲国产精品va在线看黑人| 91精品视频网站| 久久香蕉频线观| www.日韩免费| 亚洲一区二区三区毛片| 日本中文字幕成人| 亚洲精品一区二区在线| 欧美香蕉大胸在线视频观看| 日韩在线视频网站| 福利视频导航一区| 亚洲第一视频网| 成人福利网站在线观看11| 美乳少妇欧美精品| 草民午夜欧美限制a级福利片| 日韩精品一区二区视频| 亚洲va欧美va在线观看| 国产日产久久高清欧美一区| 欧美大片在线看免费观看| 一区二区三区视频免费| 国产精品香蕉在线观看| 国产精品在线看| 热re99久久精品国产66热| 黑人巨大精品欧美一区二区一视频| 日韩免费精品视频| 欧美午夜无遮挡| 一区二区中文字幕| 国产精品人成电影| 丝袜亚洲另类欧美重口| 国产精品久久久久久久久久三级| 日本精品视频在线播放| 国产免费一区视频观看免费| 欧美大全免费观看电视剧大泉洋| …久久精品99久久香蕉国产| 日韩在线不卡视频| 亚洲女人被黑人巨大进入| 97av在线影院| 久久久久久亚洲精品不卡| 91sao在线观看国产| 91亚洲va在线va天堂va国| 97在线视频国产| 亚洲欧美激情视频| 国产精品xxx视频| 国产日韩中文字幕| 97免费视频在线| 色综合视频网站| 亚洲成年网站在线观看| 日韩av手机在线看| 91精品国产91久久久久福利| 亚洲va国产va天堂va久久| 久久中文精品视频| 成人欧美在线观看| 欧美激情精品久久久久久久变态| 亚洲高清一二三区| 最近2019年日本中文免费字幕| 亚洲视频一区二区| 成人黄色免费看| 国产欧美日韩精品丝袜高跟鞋| 亚洲午夜精品久久久久久性色| 久久久免费在线观看| 久久中文字幕在线视频| 成人高h视频在线| 欧美激情在线观看| 欧美电影免费观看大全| 国内精品小视频|