REST是API的一种类型。不是所有的API都是REST,但所有的REST服务都是API。
API是一个非常广泛的术语。通常是指一个代码片段如何与另一个代码片段交互。在Web开发中,API通常是指我们从在线服务中检索信息的方式。API文档会提供一个URL列表、查询参数和其他信息,告诉您如何从API发出请求,并告知每个查询将返回什么样的响应。
REST是一组规则/标准/指南,用于构建Web API。由于有许多方法可以构建API,因此拥有一套约定好的API结构系统可以节省在构建API时做出决策的时间,同时也节省了理解如何使用API的时间。
其他流行的API范例包括SOAP和GraphQL。
请注意,上述内容试图回答关于如何在Web开发中常见使用这些术语的问题。Roman Vottner在下面提供了一个不同的答案,其中提供了比我在此处提供的更加技术精细的原始REST术语定义方面的深入洞见。
REST主要是指按照HTTP协议的本意使用它。使用GET
HTTP方法从URL检索信息,根据HTTP Accept
标头以可能不同的格式进行返回。使用POST
HTTP方法在服务器上创建新项,使用PUT
编辑现有项,使用DELETE
删除项。使API具有幂等性,即使用相同信息重复查询应产生相同的结果。以分层方式结构化您的URL等。
REST仅是一种指导原则,说明如何使用URL和HTTP协议来构建API。它并没有关于返回格式的规定,可以选择JSON作为返回格式。
这与那些向指定端口发送二进制或XML消息而不使用HTTP方法或URL差异的API形成对比。
REST 和 API 没有可比性,REST 是一种 API 类型。
API 通常是一组协议,部署在应用软件上,与其他软件组件进行通信(例如浏览器与服务器交互),并提供一个接口,以向多个实时消费者提供应用软件提供的服务。
而 REST 是一种原则形式,API 遵循这种原则,即服务器提供任何客户端想要与服务交互的信息。
相比之下,REST(REpresentational State Transfer)是由Fielding在他的博士论文中规定的,他在其中分析了整个用户在Web上的交互方式。他意识到,在Web上只需要传输协议、命名方案和定义良好的交换格式来交换消息或文档。因此,这三个部分定义了在这种生态系统中与对等体进行交互的接口。传输层由HTTP覆盖,而命名方案由URI / IRI定义。与通常仅支持一种语法的传统RPC协议不同,REST实际上独立于特定的语法。为了维护互操作性,客户端和服务器都需要就此进行协商,而HTTP本身通过 Accept
请求和 Content-Type
响应头来支持。只要客户端和服务器支持HTTP,URI / IRI和一组由支持超媒体功能的媒体类型定义的协商表示格式,它们就能够相互交互。从更狭义的角度来看,REST除了HTTP,URI / IRI和相应的媒体类型外没有API。
https://api.acme.org/users/1
这样的URI会返回描述特定系统用户的表示形式。外部文档可能会指定返回遵循给定模板的JSON结构。(参见此处)
{
"id": 1,
"firstName": "Roman",
"lastName": "Vottner",
"role": "Admin",
...
}
REST基本上是一种Web架构风格,它控制客户端和服务器的行为。而API是一组更通用的协议,部署在软件上,帮助其与其他软件交互。
REST仅适用于Web应用程序。并且主要处理HTTP请求和响应。这使得它可以被任何编程语言实际使用,并且易于测试。
API基本上是一组函数和过程,允许一个应用程序访问其他应用程序的功能。
REST是一组规则或指南,用于构建Web API。 它基本上是面向网络应用程序的架构风格,仅限于基于客户端-服务器的应用程序。
了解更多信息,请访问:https://www.freelancinggig.com/blog/2018/11/02/what-is-the-difference-between-api-and-rest-api/