什么是 REST API
REST 是 REpresentational State Transfer 的缩写,是分布式超媒体系统的架构风格。Roy Fielding 于 2000 年在他的著名论文中首次提出了这一点。从那时起,它已成为构建基于 Web 的 API(应用程序编程接口)的最广泛使用的方法之一。
REST 不是一种协议或标准,而是一种架构风格。在开发阶段,API 开发人员可以通过多种方式实现 REST。符合REST架构风格的Web API(或Web Service)称为 REST API(或RESTful API)。
REST API 风格
REST(Representational State Transfer)是一种基于网络的软件架构风格,它的设计原则包括以下六个方面:
-
统一接口(Uniform Interface):定义了一组通用的接口约束,包括资源的标识、资源的操作和资源的表示。这样可以使不同的组件之间更加松耦合,提高系统的可扩展性和可维护性。
-
客户端-服务器(Client-Server):将应用程序分为客户端和服务器两个部分,它们之间通过接口进行通信。这种分离可以提高系统的可扩展性和简化组件的开发。
-
无状态(Stateless):服务器不会保存客户端的状态信息,每个请求都是独立的。这样可以减少服务器的负担,提高系统的可伸缩性。
-
缓存(Cache):客户端可以缓存服务器的响应,以减少网络传输和提高性能。服务器可以通过设置响应头来控制缓存的行为。
-
分层系统(Layered System):将系统分为多个层次,每个层次都有特定的功能和责任。这样可以提高系统的可扩展性和安全性。
-
按需代码(Code on Demand):服务器可以向客户端传输可执行代码,以扩展客户端的功能。这种方式在 REST 中并不是必须的,但是它可以提高系统的灵活性和可扩展性。
为什么需要 REST API
REST API是在Web应用程序的发展过程中产生的。在Web应用程序的早期阶段,应用程序之间的通信主要是通过SOAP(Simple Object Access Protocol)和XML-RPC(XML Remote Procedure Call)等协议来实现的。这些协议使用XML格式来传输数据,但它们的设计复杂、繁琐,不易于使用和扩展。
在这种情况下,Roy Fielding在2000年提出了REST(Representational State Transfer)的概念,作为一种新的Web应用程序架构风格。REST使用HTTP协议作为通信协议,使用URI(Uniform Resource Identifier)来标识资源,使用HTTP请求方法(如GET、POST、PUT、DELETE等)来操作资源,并使用HTTP状态码来表示操作结果。REST的设计风格简单、灵活、可扩展,因此在Web应用程序中得到了广泛的应用。
随着Web应用程序的不断发展,REST API已经成为现代Web应用程序的重要组成部分。它可以提高应用程序的互操作性、灵活性和可伸缩性,从而为用户提供更好的体验。
其他
REST API != HTTP
Roy Fielding 在他的论文中没有提到任何实现方式——包括任何协议偏好。到目前为止,凡是满足 REST 原则的都是 RESTful
总结
简而言之,在 REST 架构风格中,数据和功能被视为资源,并使用统一资源标识符 (URI) 进行访问。
通过使用一组简单的、定义良好的操作对资源进行操作。此外,资源必须与其表示形式解耦,以便客户机能够以各种格式访问内容,如 HTML、 XML、纯文本、 PDF、 JPEG、 JSON 等。
客户端和服务端要使用标准化的接口和协议来交换资源,通常是 HTTP,但 REST 并不强制要求它。
并且可以控制缓存、检测传输错误以及身份验证或访问控制等等。最重要的是,与服务器的每次交互都必须是无状态的。所有这些原则都有助于 RESTful 应用程序变得简单、轻量级和快速。