国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:43:21
字體:
來源:轉載
供稿:網友

創建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。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 阿鲁科尔沁旗| 阿图什市| 新干县| 象山县| 永兴县| 鄯善县| 九龙坡区| 靖宇县| 平乡县| 新邵县| 北流市| 确山县| 哈尔滨市| 红河县| 成武县| 萝北县| 香港| 云龙县| 贡山| 丘北县| 南和县| 鄂托克前旗| 错那县| 于田县| 启东市| 和田市| 措勤县| 镇坪县| 浦县| 虞城县| 荔波县| 谢通门县| 高阳县| 朔州市| 合川市| 宣威市| 石家庄市| 荔浦县| 昆明市| 高雄市| 大庆市|