迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 网络 >

HTTP REST API 和 WebSocket REST API 之间的性能差异

作者:迹忆客 最近更新:2022/10/16 浏览次数:

什么是API?

应用程序编程接口 (API) 是一种软件,它为其他软件提供与之交互的接口。


什么是 REST API?

REST 或 RESTful API 设计(Representational State Transfer)是一种使用现有协议的架构风格。 REST API 设计有六个关键约束:

  • 使用统一界面 (UI)
  • 基于客户端-服务器
  • 无状态操作
  • RESTful 资源缓存
  • 分层系统
  • 按需编码

什么是HTTP REST API?

虽然 REST 几乎可以用于任何协议,但它通常利用 HTTP。 所以基本上 HTTP REST API 是一个 API,它使用 HTTP 协议在服务器和客户端之间传输请求/响应数据,同时使用 REST API 设计原则。


什么是 WebSocket REST API?

这是一个使用 WebSockets 协议的 API,它使用 WebSockets 协议(构建在 HTTP 协议之上)在服务器和客户端之间传输请求/响应数据,同时使用 REST API 设计原则。


为什么这对响应速度很重要?

虽然 WebSocket 在仅用于单个请求(打开 Web 套接字 -> 发送请求 -> 获取响应 -> 关闭 Web 套接字)时可能会过大,但当我们在单个连接上执行多个请求时,它们会非常快。 WebSockets 背后的整个想法是在客户端和服务器之间建立双向通信通道。 这意味着两件事:

  • 这种类型的连接使我们能够在不发送任何请求的情况下从服务器接收更新(例如,我们可以创建通知)
  • 因为我们只创建一次连接并多次使用它(对于我们想要的任意数量的请求),则可以节省大量服务器资源和带宽,因此我们可以获得更快的响应。

性能测试和结果

用于执行测试的硬件是具有 M1 Max 处理器和 32GB RAM 和 iPad mini 4 的 Apple MacBook Pro 16"。服务器是在 VM(2 核,4GB ram)内创建的。NodeJS(v.18.2 .0) 用于为 HTTP REST API 和 WebSocket REST API 创建相同的“书籍”模拟数据。响应长度为 358 字节。

为了我们的测试目的,我们创建了一个简单的 Flutter 应用程序(v3.0.1)来扮演测试工具的角色。 我选择 Dio 包来创建 HTTP 请求并测试 HTTP RESP API 部分和 web_socket_channel 包用于 WebSocket REST API 部分。 多个请求的结果以毫秒为单位。

Emulator 测试

Ipad mini4 测试


最后的想法

从上面的表格和图表中,我们可以毫不奇怪地看到,随着请求数量的增加,WebSocket 的优势越来越大,无论我们是在模拟器还是真实设备上进行测试。

在我的下一篇文章中,我们将解释如何使用 WebSocket REST API 的 API 版本控制构建简单的 NodeJS 服务器架构。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

构建 MongoDB REST API

发布时间:2023/04/20 浏览次数:153 分类:MongoDB

MongoDB 没有成熟的 REST 接口,因为服务器使用本机二进制协议来提高效率。 但是,各种应用程序都允许创建 MongoDB REST API。

如何在 Go 中重用 Http 连接

发布时间:2023/01/17 浏览次数:139 分类:Go

HTTP 1.1 协议支持 HTTP 持久连接,也称为 HTTP Keep-Alive 。 这允许客户端和服务器在发送多个 HTTP 请求/响应时重新使用相同的底层 TCP 连接。 因此,客户端不是为每个 HTTP 请求建立连接,而

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便