HTTP REST API 和 WebSocket REST API 之间的性能差异
什么是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 部分。 多个请求的结果以毫秒为单位。
最后的想法
从上面的表格和图表中,我们可以毫不奇怪地看到,随着请求数量的增加,WebSocket 的优势越来越大,无论我们是在模拟器还是真实设备上进行测试。
在我的下一篇文章中,我们将解释如何使用 WebSocket REST API 的 API 版本控制构建简单的 NodeJS 服务器架构。
相关文章
JavaScript 中的 HTTP GET 请求
发布时间:2024/03/22 浏览次数:157 分类:JavaScript
-
要从 Web 浏览器中检索数据或任何类型的数据格式,我们可以使用 XMLHttpRequest 对象来捕获 URL 以及 Fetch API。
在 C# 中发出 HTTP POST Web 请求
发布时间:2024/02/04 浏览次数:131 分类:编程语言
-
在 C# 中,可以使用 3 种主要方法来发出 HTTP POST Web 请求:WebClient 类,HttpWebRequest 类和 HttpClient 类。本教程将讨论在 C# 中发出 HTTP POST Web 请求的方法。使用 C# 中的 WebClient 类发出 HTTP POST Web 请求
C# 中的 REST API
发布时间:2024/02/03 浏览次数:99 分类:编程语言
-
RestSharp 客户端可用于在 C# 中进行 REST API 调用。在 C# 中使用 RestSharp 客户端进行 REST API 调用
在 Java 中创建 HTTP 代理服务器
发布时间:2023/10/10 浏览次数:200 分类:Java
-
本教程演示如何在 Java 中创建代理服务器。在当今世界,代理几乎是每个人的需要。本教程演示如何在 Java 中创建 HTTP 代理服务器。在 Java 中创建 HTTP 代理服务器
使用 Java 创建 HTTPS 服务器
发布时间:2023/08/10 浏览次数:282 分类:Java
-
本文介绍如何使用 Java 创建简单的 HTTPS 服务器。使用 Java 创建 HTTPS 服务器 在用JAVA创建HTTPS服务器之前,我们必须确保已经生成了服务器将使用的Keystore和Truststore。
Java 中的 WebSocket 客户端
发布时间:2023/08/09 浏览次数:789 分类:Java
-
本文介绍如何使用 Java 创建 WebSocket 客户端。Java 中的 WebSocket 客户端 WebSocket 可用于在客户端和服务器之间创建通信通道。 WebSocket 协议与用于 Web 通信的 HTTP 兼容。
在 Java 中使用 Fiddler 捕获 HTTPS 流量
发布时间:2023/07/17 浏览次数:97 分类:Java
-
Fiddler是一个Web调试代理工具,可以帮助开发人员调试Web应用程序。 它允许捕获网络流量并监控传入和传出的数据。本文将教我们设置Fiddler来捕获HTTPS流量。
Java 中错误 The Superclass Javax.Servlet.Http.HttpServlet Was Not Found on the
发布时间:2023/07/14 浏览次数:106 分类:Java
-
本篇文章介绍如何解决在 Java 中的 javax.servlet.http.HttpServlet" was not found on the Java Build Path 的问题。Java 中 javax.servlet.http.HttpServlet" was not found on the Java Build Path 当我们在 Eclipse 中编写第一个 JSP 代码
Java 错误 Invalid Character Found in Method Name. HTTP Method Names Must Be Tok
发布时间:2023/07/11 浏览次数:579 分类:Java
-
本篇文章将介绍 Tomcat 的一些可能的原因和解决方案:java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens。Tomcat 的 java.lang.IllegalArgumentException: Invalid character foun