原文做者:Chidume Nnamdi前端
譯者:UC 國際研發 Jothyios
寫在最前:歡迎你來到「UC國際技術」公衆號,咱們將爲你們提供與客戶端、服務端、算法、測試、數據、前端等相關的高質量技術文章,不限於原創與翻譯。算法
Web 開發中客戶端與服務器間的交互很是重要,它有利於客戶端應用高度動態化。用戶經過單擊按鈕的交互方式向服務器發送請求,服務器檢索數據並返回,頁面無需從新加載,直接使用返回的數據從新渲染其部分/總體內容,或者對數據進行操做。
promise
這其中的技術原理是 AJAX,經過 XMLHttpRequest 實例實現。 爲了提高 AJAX 及 XMLHttpRequest 的使用體驗,社區開發了一些無需處理 AJAX 和 XMLHttpRequest 就直接發出 HTTP 請求的庫。
瀏覽器
本文將帶你研究 5 個最流行的 HTTP 庫,瞭解它們是如何實現的。 但願能幫你省下一些時間。
服務器
提示:經過與 Bit 共享同步公共組件能夠避免代碼重複。 把相同的功能的代碼變成共享組件,就能夠隨處使用它了,構建更快喲~趕忙試試看。工具
基於 Promise 的 HTTP 客戶端,可用於瀏覽器和 Node.js
性能
Axios 是一個基於 Promise 的 HTTP 庫,可用在 Node.js 和瀏覽器上發起 HTTP 請求,支持全部現代瀏覽器,甚至包括 IE8+!測試
同時支持 Node.js 和瀏覽器編碼
支持 Promise API
能夠配置或取消請求
能夠設置響應超時
支持防止跨站點請求僞造(XSRF)攻擊
能夠攔截未執行的請求或響應
支持顯示上傳進度
普遍用於 React 和 Vue 項目
用起來比較麻煩
改良版 Ajax——與 Node.js HTTP 客戶端搭配使用
Superagent 是一個基於 Promise 的輕量級漸進式 AJAX API,很是適合發送 HTTP 請求以及接收服務器響應。 與 Axios 相同,它既適用於 Node,也適用於全部現代瀏覽器。
用 Superagent 發起 HTTP 請求就像在 request 對象上調用方法同樣簡單:
它有一個插件生態,經過構建插件能夠實現更多功能
可配置
HTTP 請求發送接口友好
能夠爲請求鏈式添加方法
適用於瀏覽器和 Node
支持顯示上傳和下載進度
支持分塊傳輸編碼
支持舊風格的回調
繁榮的插件生態,支持衆多常見功能
其 API 不符合任何標準
🏊🏾 簡化版 HTTP 請求客戶端
Request 提供了一種簡化的 HTTP 請求方式。 你可使用比其餘 HTTP 庫更少的代碼來發起 HTTP 請求。 它不是基於 Promise 的,但若是你須要 Promise,你能夠引入request-promise
庫,將請求封裝爲 Promise 並返回。
優勢
API 簡單易用
不基於 Promise
靈活易用
使用 Promise 避免回調地獄
支持全部現代瀏覽器
遵循 request-response 方案
語法簡單清晰
支持 React Native
缺點
不支持服務器端使用
缺少開發庫的亮點功能,好比取消請求
沒有內置默認值,如請求模式,請求頭,請求憑據。
Superagent 驅動,有一套流暢的 API 用於測試 Node.js HTTP 服務器
Supertest 用於測試 Node.js HTTP 服務器。 該庫由 SuperAgent 提供支持,它把自身的 API 和 SuperAgent 的底層 API 相結合,提供簡潔的 HTTP 測試接口。
優勢
流暢的 API
簡單的 HTTP 斷言
能夠與 Chai.js 和 Mocha 等不一樣的測試套件混用
缺點
不支持瀏覽器
分析完熱門 HTTP 庫,你可能會問「我應該選擇哪個?」
我想說,選擇哪一個庫取決於你的項目、規模和目標用戶,每一個選擇都有好有壞。 若是你爲誤判規格選擇了錯誤的庫,那就得考慮下這個問題,從新選擇合適的工具。
若是你有任何疑問或以爲有須要補充、更正或刪除的,任何疑問都請隨時發表評論,發郵件或直接私信我。 謝謝閱讀!👏
原文地址:https://blog.bitsrc.io/comparing-http-request-libraries-for-2019-7bedb1089c83?gi=89b097d4bfd1
好文推薦:
JavaScript 極致性能追求:TC39 二進制 AST 提案
「UC國際技術」致力於與你共享高質量的技術文章
歡迎關注咱們的公衆號、將文章分享給你的好友