REST 一文彻底搞明白

120 阅读2分钟

定义

首先 REST(Representational State Transfer,表述性状态转移)是一种基于HTTP/HTTPS协议的软件架构风格。它是由 Roy Fielding 在 2000 年提出的,主要关注资源(Resources)的操作和表示。RESTful 是遵循 REST 风格的设计,是一种设计 API 的一种思想和约定。

场景

在 RESTful 架构中,资源是核心的概念,每个资源可以被唯一地表示为一个 URL。使用 HTTP 方法(如 GET、POST、PUT、DELETE 等)对资源执行各种操作。

原则

REST 的核心设计原则如下:

  1. 无状态(Stateless):  每个客户端与服务器的请求和响应是相互独立的,服务器不需要存储客户端的状态。服务器会将所有必要的信息存储在请求中,并根据请求处理响应。这有助于提高服务器的可扩展性。

  2. 客户端-服务器(Client-Server):  REST 遵循客户端-服务器架构,客户端负责用户界面,服务器负责处理数据和业务逻辑。通过将内容呈现和数据处理分离,我们可以更加轻松地升级和扩展我们的系统。

  3. 缓存(Cache):  在 REST 架构中,开发人员可以将响应标记为可缓存或不可缓存。这有助于提高客户端的性能,因为它可以重用之前的响应,而不是再次向服务器请求。

  4. 分层系统(Layered System):  REST 架构允许分层系统,每层具有独立的功能。例如,可以有一个负责认证的层,一个负责数据处理的层,一个负责业务逻辑的层等。分层可以使复杂的系统更易于管理和维护。

  5. 统一接口(Uniform Interface):  RESTful API 遵循统一的接口原则,这使得 API 更加简洁和一致。统一接口原则包括以下几个方面:

    • 资源标识:每个资源都有一个唯一的 URL。
    • 资源操作:使用标准的 HTTP 方法(如 GET、POST、PUT、DELETE)操作资源。
    • 资源表示:资源可以有多种表现形式,例如 JSON、XML 等。
    • 自描述消息:消息应包含足够的信息以描述如何处理消息。例如,内容类型和响应状态码。

通过遵循这些原则,RESTful API 设计可以在可扩展性、可读性、可维护性和性能方面提供很多优势。在实际应用中,许多现代 Web 服务(如 Google、GitHub、Twitter 等)都采用了 RESTful 风格的接口。