写点什么

REST 约束:以用户为中心的设计思路

作者:Apifox
  • 2023-06-15
    广东
  • 本文字数:1243 字

    阅读完需:约 4 分钟

REST 约束:以用户为中心的设计思路

REST 是 Representational State Transfer 的缩写,是 Roy Fielding 于 2000 年提出的一种通过 HTTP 设计松散耦合应用程序的架构风格,其主要应用于 Web 服务的开发。REST 不是强制性的,可以不遵守,但它提供了一种高级设计指南。

架构约束

REST 定义了六种架构约束来构成 Web 服务。RESTful API 是指使用 HTTP 并遵循 REST 原则的 API。这些架构约束有以下作用:


  • 提高系统的可伸缩性和可靠性:通过客户端-服务器分离、无状态和分层系统等架构约束,使系统更容易扩展和维护,提高系统的可靠性;

  • 提高系统的性能:使用缓存可以减少对服务器资源的消耗,从而提高系统的性能和可伸缩性;

  • 提高系统的安全性和隔离性:分层系统可以提供更好的安全性和隔离性,使系统更加安全可靠;

  • 降低开发和维护成本:通过统一接口可以使开发人员更加容易地理解和使用 API,同时按需代码可以减少服务器端的负载,提高了客户端的灵活性和可扩展性。


一个 RESTful API,需要满足以下六大架构约束:


  1. 统一接口

  2. CS (客户端-服务器分离)

  3. 无状态

  4. 缓存

  5. 系统分层

  6. 按需编码(可选)


接下来我们来详细看看这六大架构约束。

CS(客户端-服务器分离)

这是 REST 风格的基本原则之一:将客户端和服务器之间分离,使其能够分别进行演化和扩展,提高了系统的可伸缩性和可靠性。通过客户端-服务器分离,客户端和服务器可以分别由不同的开发团队进行开发和维护,并且可以使客户端和服务器之间的协议更加简单和清晰。

无状态

服务器不应存储客户端的状态信息。每个请求都应该包含足够的信息以便服务器可以处理请求,这样可以使服务器更容易扩展,提高系统的可伸缩性和可靠性。无状态的设计可以降低系统的复杂度,并且可以减少对服务器资源的消耗。

缓存

服务器应该尽可能地使用缓存来提高性能和可扩展性。客户端可以缓存服务器返回的响应,以减少对服务器的请求;服务器也可以缓存请求的响应,以减少对后端系统的请求。缓存可以减少网络带宽的使用,提高系统的性能和可伸缩性。

统一接口

REST 使用一组标准接口来实现客户端和服务器之间的通信。这些接口包括资源的标识、资源的表示、自描述消息、超媒体作为应用程序状态的引擎等。通过使用这些标准接口,REST 可以使客户端和服务器之间的通信更加简单和可靠。统一接口可以使开发人员更加容易地理解和使用 API。

分层系统

REST 允许系统被分成多个层次,每个层次都可以有自己的功能。这样可以提高系统的可伸缩性和可靠性,同时也提供了更好的安全性和隔离性。分层系统可以使开发人员更加容易地扩展和修改系统,也可以提高系统的可靠性和安全性。

按需代码(可选)

REST 可以通过向客户端传输可执行的代码(例如 JavaScript)来扩展客户端的功能。这样可以减少服务器端的负载,同时也提高了客户端的灵活性和可扩展性。按需代码可以使开发人员更加容易地扩展和修改客户端功能。


最后需要注意的是,这些约束并不是死的,如果违反了一两个,也不影响称为 RESTful API,但不符合“真正的 RESTful”约束。

知识扩展:

了解更多 REST API 相关知识。


用户头像

Apifox

关注

Apifox 2022-05-17 加入

Apifox 是 API 文档、API 调试、API Mock、API 自动化测试一体化平台。Apifox = Postman + Swagger + Mock + JMeter

评论

发布
暂无评论
REST 约束:以用户为中心的设计思路_程序员_Apifox_InfoQ写作社区