原文做者: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国际技术”致力于与你共享高质量的技术文章
欢迎关注咱们的公众号、将文章分享给你的好友