REST和API有什么区别?

Web*_*per 26 api rest

我想知道REST和API之间的主要区别.有时我在编程文档中看到REST API,那么REST或API是否与REST API相同?我想更多地了解REST,API和REST API之间的关系.

谢谢.

dav*_*ave 46

REST是一种API.并非所有API都是REST,但所有REST服务都是API.

API是一个非常广泛的术语.通常,这是一段代码与另一段代码交谈的方式.在Web开发中,API通常指的是我们从在线服务检索信息的方式.API文档将为您提供URL列表,查询参数以及有关如何从API发出请求的其他信息,并告知您将为每个查询提供何种响应.

REST是一组关于如何构建Web API的规则/标准/指南.由于有很多方法可以做到这一点,因此建立一个结构化API的商定系统可以节省构建API的时间,并节省了解如何使用API​​的时间.

  • 您好,我可以请您解释更多细节吗?谢谢 (2认同)
  • 我已经编辑了答案,在其中添加了更多详细信息,但这是一个非常广泛的主题,在这里我可能无法介绍。如果您需要更多详细信息,建议使用谷歌搜索术语REST和API。此外,有关您要在API方面尝试实现的目标的一些详细信息可能会更容易给出问题的清晰答案。 (2认同)
  • 非 REST API 的示例是什么? (2认同)

Tuk*_*une 16

REST主要只是指按照预期的方式使用HTTP协议.GET在URL上使用HTTP方法可以检索信息,可能是基于HTTP Accept标头的不同格式.使用POSTHTTP方法在服务器上创建新项目,PUT编辑现有项目DELETE以删除它们.使API具有幂等性,即使用相同的信息重复相同的查询应该产生相同的结果.以分层方式构建您的URL等.

REST只是如何使用URL和HTTP协议来构建API的指导原则.它没有提到返回格式,也可能是JSON.

这与例如将二进制或XML消息发送到指定端口的API相反,而不是使用HTTP方法或URL中的差异.


Rom*_*ner 13

API 是 的缩写Application Programming Interface,定义了一组必须实现的结构(即类),以便与 API 公开的服务进行交互。API 通常公开可调用的操作,包括任何必需或支持的参数以及预期响应。这里的经典示例是 Java 生态系统中的 Corba IDL、SOAP 或 RMI,还有 Swagger 或 OpenAPI 等文档中指定的类似 RPC 的 Web 系统用法。

相反,菲尔丁在他的博士论文中详细说明了 REST(表述性状态转移),他分析了整个用户交互是如何在 Web 上发生的。他意识到在网络上交换消息或文档只需要一个传输协议、一个东西的命名方案以及一个明确定义的交换格式。因此,这三个部分定义了与此类生态系统中的同行交互的界面。传输层由 HTTP 覆盖,而命名方案由 URI/IRI 定义。与通常仅支持一种语法的传统 RPC 协议相反,REST 实际上独立于特定语法。为了保持客户端和服务器的互操作性,需要进行协商,HTTP 本身通过Accept请求和Content-Type响应标头支持协商。只要客户端和服务器支持 HTTP、URI/IRI 和一组通过支持超媒体功能的媒体类型定义的协商表示格式,它们就能够相互交互。因此,从更狭义的意义上讲,REST 除了 HTTP、URI/IRI 和相应的媒体类型之外没有 API。

然而,不幸的是事情并不那么容易。不幸的是,大多数人对REST或 的理解非常不同REST API。虽然 URI 本身不应该传达任何语义,毕竟它们只是指向资源的指针,但许多程序员对 URI 的重视程度超出了他们应有的程度。有些客户端会尝试从 URI 中提取一些知识,或者考虑 URI 返回代表某种类型的响应。即,考虑 URI 似乎很自然,例如https://api.acme.org/users/1返回描述该特定系统的特定用户的表示。外部文档可能会指定返回遵循给定模板的 JSON 结构,例如

{
  "id": 1,
  "firstName": "Roman",
  "lastName": "Vottner",
  "role": "Admin",
  ...
}
Run Code Online (Sandbox Code Playgroud)

然而可以预见的是,这样的东西更接近于 RPC,而不是 REST。响应既不是 REST 所要求的自描述性,也不遵循遵循明确定义的媒体类型的表示格式,该媒体类型定义了语法以及可能形成消息的每个元素。因此,客户端通常是专门为一个特定系统(或 REST API,如果您愿意的话)量身定制的,并且在没有进一步手动集成/更新的情况下,不能用于与开箱即用的不同系统进行交互。OpenAPI 或 Swagger 等外部文档用于描述可用端点、服务器能够处理的有效负载模板以及预期响应,具体取决于输入。因此,这些文档是事实,并定义了客户端可以查找甚至用于自动生成存根类以与服务器端交互的 API,类似于 SOAP。

因此我不同意戴夫给出的答案。虽然对于 RPC 系统或REST API他的定义的常见理解术语可能是合适的,但对于实际的 REST 架构,他的解释根本不合适,因此,至少在我看来,也不正确。REST 不是规则、标准和/或指南的集合。它是一组很少的约束,只是确保这种架构中的对等体避免耦合、支持未来的演进并变得更加稳健以应对变化。


SSa*_*wal 9

REST 和 API 没有可比性,REST 是一种 API 类型。

一般来说,API 是一组部署在应用程序软件上的协议,用于与其他软件组件(如浏览器与服务器交互)进行通信,并为应用程序软件向多个实时消费者提供的服务提供接口。

Rest 是 API 遵循的一种原则形式,其中服务器提供客户端希望与服务交互的任何信息。


S.A*_*lvi 8

REST 基本上是一种管理客户端和服务器行为的 Web 架构风格。API 是一组更通用的协议,部署在软件上以帮助它与其他一些软件进行交互。REST 仅面向 Web 应用程序。并且主要处理 HTTP 请求和响应。这使得它实际上可以被任何编程语言使用并且易于测试。


Thi*_* Le 5

API基本上是一组函数和过程,允许一个应用程序访问其他应用程序的功能

REST 是构建 Web API 的一组规则或指南。 它基本上是网络上网络应用程序的架构风格,仅限于基于客户端-服务器的应用程序。

了解更多信息:https://www.freelancinggig.com/blog/2018/11/02/what-is-the-difference- Between-api-and-rest-api/