REST 约束:以用户为中心的设计思路
REST 是 Representational State Transfer 的缩写,是 Roy Fielding 于 2000 年提出的一种通过 HTTP 设计松散耦合应用程序的架构风格,其主要应用于 Web 服务的开发。REST 不是强制性的,可以不遵守,但它提供了一种高级设计指南。
架构约束
REST 定义了六种架构约束来构成 Web 服务。RESTful API 是指使用 HTTP 并遵循 REST 原则的 API。这些架构约束有以下作用:
提高系统的可伸缩性和可靠性:通过客户端-服务器分离、无状态和分层系统等架构约束,使系统更容易扩展和维护,提高系统的可靠性;
提高系统的性能:使用缓存可以减少对服务器资源的消耗,从而提高系统的性能和可伸缩性;
提高系统的安全性和隔离性:分层系统可以提供更好的安全性和隔离性,使系统更加安全可靠;
降低开发和维护成本:通过统一接口可以使开发人员更加容易地理解和使用 API,同时按需代码可以减少服务器端的负载,提高了客户端的灵活性和可扩展性。
一个 RESTful API,需要满足以下六大架构约束:
统一接口
CS (客户端-服务器分离)
无状态
缓存
系统分层
按需编码(可选)
接下来我们来详细看看这六大架构约束。
CS(客户端-服务器分离)
这是 REST 风格的基本原则之一:将客户端和服务器之间分离,使其能够分别进行演化和扩展,提高了系统的可伸缩性和可靠性。通过客户端-服务器分离,客户端和服务器可以分别由不同的开发团队进行开发和维护,并且可以使客户端和服务器之间的协议更加简单和清晰。
无状态
服务器不应存储客户端的状态信息。每个请求都应该包含足够的信息以便服务器可以处理请求,这样可以使服务器更容易扩展,提高系统的可伸缩性和可靠性。无状态的设计可以降低系统的复杂度,并且可以减少对服务器资源的消耗。
缓存
服务器应该尽可能地使用缓存来提高性能和可扩展性。客户端可以缓存服务器返回的响应,以减少对服务器的请求;服务器也可以缓存请求的响应,以减少对后端系统的请求。缓存可以减少网络带宽的使用,提高系统的性能和可伸缩性。
统一接口
REST 使用一组标准接口来实现客户端和服务器之间的通信。这些接口包括资源的标识、资源的表示、自描述消息、超媒体作为应用程序状态的引擎等。通过使用这些标准接口,REST 可以使客户端和服务器之间的通信更加简单和可靠。统一接口可以使开发人员更加容易地理解和使用 API。
分层系统
REST 允许系统被分成多个层次,每个层次都可以有自己的功能。这样可以提高系统的可伸缩性和可靠性,同时也提供了更好的安全性和隔离性。分层系统可以使开发人员更加容易地扩展和修改系统,也可以提高系统的可靠性和安全性。
按需代码(可选)
REST 可以通过向客户端传输可执行的代码(例如 JavaScript)来扩展客户端的功能。这样可以减少服务器端的负载,同时也提高了客户端的灵活性和可扩展性。按需代码可以使开发人员更加容易地扩展和修改客户端功能。
最后需要注意的是,这些约束并不是死的,如果违反了一两个,也不影响称为 RESTful API,但不符合“真正的 RESTful”约束。
知识扩展:
了解更多 REST API 相关知识。
评论