什么是REST API?
自从互联网发明以来,我们一直在使用不同的应用程序和网页来获取各种资源的数据。但是,您是否曾经想过,这些数据从何而来?好吧,这是我们从中获取数据的服务器。因此,在这篇关于什么是REST API的文章中,让我们研究一下客户端如何与服务器通信以提取所需的信息。
本文将介绍以下主题:
- 需要REST API
- 什么是REST API?
- REST API的原理
- REST API的方法
- 如何创建REST API?
现在,在为您定义REST API之前,让我来看一个示例,以使您了解REST API的需求。
为什么需要REST API
考虑一种使用“预订电影”应用的场景。现在,显然,此应用程序需要大量的输入数据,因为应用程序中存在的数据永远不会是静态的。要么是电影频繁发行,要么是各个城市在一天的不同时间播放不同语言的电影。它永远不是静态的,这暗示着在这些应用程序中数据总是在变化的事实。
现在,您认为我们从哪里得到这些数据?
嗯,这些数据是从服务器或最常用的Web服务器接收的。因此,客户端通过API向服务器请求所需的信息,然后服务器将响应发送到客户端。
在这里,发送给客户端的响应采用HTML Web Page的形式。但是,您认为这是发送请求时所期望的适当响应吗?
好吧,我假设你会说“不”。因为,您希望以结构化格式而不是完整的Web页面形式返回数据。
因此,由于这些原因,服务器响应客户端请求返回的数据为JSON或XML格式。JSON和XML格式都具有适当的数据层次结构。
现在,这听起来很简单,对吧?
但是,到目前为止,该框架中存在的唯一问题是您必须使用许多方法来获取所需的信息。实际上,当您需要复杂的数据时,使用这些方法来检索信息变得非常麻烦。
因此,这就是REST API出现的地方。REST API创建一个对象,然后将对象的值发送给客户端。
现在,您知道了REST的需求,在本文的下一步中,让我们研究一下什么是REST API?
什么是REST API?
REST建议创建客户端请求的数据的对象,并响应于用户发送该对象的值。例如,如果用户要在某个特定的时间和地点上映电影,则可以在服务器端创建一个对象。
因此,在这里,您有一个对象,并且正在发送对象的状态。这就是为什么REST被称为代表性状态转移的原因。
如果必须定义REST,则表示状态转移(又称REST)既是一种体系结构样式,又是一种用于通信目的的方法,通常在各种Web服务开发中使用。
REST的体系结构样式有助于利用较少的带宽使用,使应用程序更适合于Internet。它通常被视为“互联网的语言”,并且完全基于资源。
为了更好地理解,让我们更深入地研究一下REST API的工作原理。基本上,REST API分解事务以创建小模块。现在,每个模块都用于处理事务的特定部分。这种方法提供了更大的灵活性,但是需要从头开始进行大量工作。
因此,既然您知道什么是REST API,接下来让我们了解将应用程序视为REST API必须满足的约束或原则。
REST API的原理
Fielding博士在2000年定义了REST API设计时制定了六项基本原则。以下是REST的六项指导原则:
无状态
从客户端发送到服务器的请求将包含所有必需的信息,以使服务器理解从客户端发送的请求。它可以是URL,查询字符串参数,正文甚至标题的一部分。URL用于唯一标识资源,主体保留请求资源的状态。服务器处理完请求后,将通过正文,状态或标头将响应发送给客户端。
客户端-服务器
客户端-服务器体系结构实现了统一的界面,并将客户端与服务器分离。这增强了跨多个平台的可移植性以及服务器组件的可伸缩性。
统一界面
为了获得整个应用程序的一致性,REST具有以下四个接口约束:
- 资源识别
- 使用表示进行资源操纵
- 自我描述的讯息
- 超媒体作为应用程序状态的引擎
可缓存的
为了提供更好的性能,通常使应用程序可缓存。通过将服务器的响应隐式或显式标记为可缓存或不可缓存来完成。如果将响应定义为可缓存,则客户端缓存可以在将来将响应数据重新用于等效的响应。
分层系统
分层的系统体系结构通过限制组件的行为使应用程序更加稳定。这种类型的体系结构有助于提高应用程序的安全性,因为每一层中的组件都不能在它们所在的下一个直接层之外进行交互。此外,它还可以实现负载平衡并提供共享缓存以促进可伸缩性。
按需编码
这是一个可选约束,使用最少。它允许客户端代码或小程序被下载并在应用程序中使用。从本质上讲,它通过创建不依赖于其自身代码结构的智能应用程序来简化客户端。
现在,您知道了REST API的原理,接下来让我们看一下REST API的方法。
REST API的方法
我们所有人都使用Web技术进行CRUD操作。当我说CRUD操作时,是指我们创建资源,读取资源,更新资源和删除资源。现在,要执行这些操作,您实际上可以使用HTTP方法,这些方法不过是REST API方法。请参考以下内容。