📜  Rest API 和 Web Socket API 的区别(1)

📅  最后修改于: 2023-12-03 15:34:43.045000             🧑  作者: Mango

Rest API 和 Web Socket API 的区别

概述

Rest API 和 Web Socket API 是两种常见的 API 模式,它们各有特点,且在不同场景下使用。本文将介绍它们的区别。

Rest API
基本概念

Rest API(Representational State Transfer)是一种基于 HTTP 协议的 API,它是一种面向资源的设计风格。每个资源由一个 URI 表示,通过 HTTP 协议支持 GET、POST、PUT、DELETE 等操作。

特点
  • Rest API 是无状态的,即每个请求都是独立的,不依赖之前的请求。
  • Rest API 通过 URI 和 HTTP 方法来操作资源,使得 API 简单易用,也方便了客户端和服务端的通信。
  • Rest API 支持多种数据格式,如 JSON、XML 等。
  • Rest API 可缓存,可降低服务器负载。
  • Rest API 的安全性较高,支持 SSL 加密、API key 等认证方式。
工作原理

Rest API 的基本工作原理是通过 HTTP 方法来操作资源。例如,如果要查询某个资源,使用 GET 方法,URI 为资源的地址。如果要添加新的资源,使用 POST 方法,URI 为资源的地址,且需要在请求的 body 中发送资源的数据。如果要更新资源,使用 PUT 方法,URI 为资源的地址,且需要在请求的 body 中发送更新后的数据。如果要删除资源,使用 DELETE 方法,URI 为资源的地址。

示例代码
GET /api/posts HTTP/1.1
Host: example.com
Authorization: Bearer <access_token>

HTTP/1.1 200 OK
Content-Type: application/json

{
    "data": [
        {
            "id": 1,
            "title": "Hello, World!",
            "content": "..."
        },
        {
            "id": 2,
            "title": "Goodbye, World!",
            "content": "..."
        }
    ]
}
Web Socket API
基本概念

Web Socket API 是一种基于 TCP 协议的 API,它允许客户端和服务端建立长久的连接,通过双向通信实时交换数据。

特点
  • Web Socket API 支持双向通信,实时性较高,适合需要实时更新数据的场景。
  • Web Socket API 的数据传输格式比 Rest API 更轻量级,消耗的网络资源较少。
  • Web Socket API 不受跨域限制,可在跨域场景下使用。
  • Web Socket API 在浏览器中依赖 JavaScript 对象。
工作原理

Web Socket API 的工作原理基于 TCP 协议,通过客户端和服务端的握手来建立连接。建立连接后,客户端和服务端可以随时发送数据,在发送数据时,不必重复建立连接。

示例代码
const socket = new WebSocket('ws://example.com');

socket.addEventListener('open', (event) => {
  socket.send('Hello, Server!');
});

socket.addEventListener('message', (event) => {
  console.log(`Server: ${event.data}`);
});

socket.addEventListener('close', (event) => {
  console.log('Disconnected');
});
总结

Rest API 和 Web Socket API 各有特点,应根据实际需求选择使用。Rest API 更适合请求和响应数据,Web Socket API 更适合实时性较高、需要频繁通信的场景。在开发过程中,可以根据实际场景来选择使用。