<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

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

        來源:懂視網 責編:小采 時間:2020-11-27 22:02:17
        文檔

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

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

        創建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將瀏覽器的獲取(fetch)功能移植到后端。在其他語言中也有各種類似的庫解決這個問題,比如 Python 和 Ruby 。

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

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

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

        詳解在Node.js中發起HTTP請求的5種方法:創建HTTP請求使現代編程語言的核心功能之一,也是很多程序員在接觸到新的開發環境時最先遇到的技術之一。在Node.js中有相當多的解決方案,其中有語言內置功能,也有開源社區貢獻的開發庫。下面咱們來看一下比較流行的幾種方式。 在開始之前,請先在自己的計算
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲视频免费观看| 亚洲视屏在线观看| ssswww日本免费网站片| 日本黄色免费观看| 色欲aⅴ亚洲情无码AV蜜桃| 日韩成全视频观看免费观看高清| 国产成人精品日本亚洲网址| 久久亚洲国产中v天仙www| 中文字幕的电影免费网站| 亚洲精品无码成人片久久| 免费黄网站在线看| 久久久久久久亚洲Av无码| 91福利免费视频| AV在线亚洲男人的天堂| 亚洲自偷自偷在线成人网站传媒 | 国产男女性潮高清免费网站| 亚洲性色精品一区二区在线| 国产精品视_精品国产免费| 免费看一级一级人妻片| 亚洲人JIZZ日本人| 91福利视频免费观看| 亚洲精品天堂成人片AV在线播放| 啊v在线免费观看| 国产精品免费观看调教网| 久久久久精品国产亚洲AV无码| 色吊丝最新永久免费观看网站| 深夜A级毛片视频免费| 久久精品国产亚洲夜色AV网站| 在线观看成人免费视频不卡| 亚洲AV无码一区二区乱子仑| 国产亚洲美女精品久久久2020| 青青草无码免费一二三区| 亚洲中文久久精品无码ww16| 中文字幕在线免费观看| 亚洲精品无码不卡在线播放| 永久免费的网站在线观看| 亚洲AV永久无码天堂影院| 亚洲永久精品ww47| 色窝窝免费一区二区三区 | 中文字幕在线免费看线人| 亚洲av极品无码专区在线观看|