资源和端点之间有什么区别?


139

我听说“资源”和“端点”都指同一件事。资源似乎是一个较新的术语。

它们之间有什么区别?“资源”是否意味着RESTful设计?

Answers:


107

休息

资源Endpoint的RESTful子集。

一个端点本身就是一个服务可以被访问的位置:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

一个资源是指所服务的一个或多个名词,在命名空间的时尚代表,因为它很容易为人们理解:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

RESTful来讲,以上所有内容都可以视为服务端点,但是只有底层可以视为资源。最高层在提供的内容方面没有表现力。

REST请求就像由名词(资源)和动词(HTTP方法)组成的句子:

  • GET(方法)名为johnny(资源)的用户。
  • DELETE(方法)带有ID 1234(资源)的书。

非REST

端点通常是指服务,但是资源可能意味着很多事情。以下是一些资源示例,这些示例取决于所使用的上下文。

URL:统一的“资源”定位器

  • 可以是RESTful,但通常不是。在这种情况下,端点几乎是同义词。

资源管理

字典

  • 定义提供了单词的更多用途。

可以帮助您的事情:

图书馆是宝贵的资源,他经常使用它。

资源是天然物质,例如水和木材,对维持生命具有重要价值:

地球资源有限,如果我们不回收资源,就会用光它们。

资源也是有价值的东西,例如金钱或财产,可以在需要时使用:

政府没有资源聘请所需的教师人数。


道德

根据定义,资源一词有很多细微差别。这完全取决于其使用的上下文


1
我怀疑一样。您是否看到过任何解释或记录此内容的参考资料?
B

添加了一些链接,使您可以轻松了解每个术语。
cchamberlain 2015年

84

术语资源端点通常是同义词。但实际上,它们并不意味着同一件事。

术语“ 端点”集中于用于发出请求的URL
术语资源集中于请求返回的数据集

现在,相同的资源通常可以由多个不同的端点访问。
同样,同一端点可以根据查询字符串返回不同的资源

让我们看一些例子:

不同的端点访问相同的资源

看一下以下不同端点的示例:

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

他们显然都可以在给定的API中访问相同的资源

现有的API也可以完全更改。这可能会导致新的端点将使用全新的和不同的URL访问相同的旧资源:

/api/employees/3
/new_api/staff/3

一个端点访问不同的资源

如果端点返回集合,则可以使用查询字符串实现搜索/过滤/排序。结果,以下所有URL都使用相同的终结点/api/companies),但是它们可以返回不同的资源(或资源集合,根据定义,它们本身就是资源):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
很好地解释👍🏻
mangonights

1
“因此,以下URL都使用相同的端点(/ api / companies),但是它们可以返回不同的资源。” 我的意思是没有冒犯,但您实际上是在这里弥补您的解释。就REST而言,这些只是不同资源的位置。您尝试将端点部分解释为URL的其他部分。这是因为您是一名程序员,并且正在考虑如何将其实现为单个操作方法中的一段代码。想象一下,所有这些不同的URL是从4个服务器路由并提供服务的,它们都是相同的端点吗?现在没有意义了。
路加·普普利特

1
查询字符串不属于端点的原因是端点不是REST语言或URL的一部分。事实并非如此。您正在考虑对处理Web应用程序进行编码。REST没有提及查询参数或排序或其他任何内容。只是没有。如果您使用/ orders返回集合,并且/ orders?top = 10只是漂亮的URL,那么它与使用/ 32knre32nj的链接(对于集合)和/ abcd的前十个订单的链接一样,没有多大程度的RESTful。它们只是资源标识符。URL不能或多或少是RESTful的,端点不是问题。
路加·普普利特

只需添加一下,REST的关键部分就是链接,这样,消费者就不必关心资源标识符了,我根本不在乎URL此处的“添加注释”按钮后面的URL。当我们停止思考端点和漂亮的URL,而不再考虑URL附带的超链接时,基于交互目标设计漂亮的基于工作流的API容易得多-我想寻找一家公司,以便x-您的API应该是一段旅程到x,其中搜索处于流程的中间,直到最终应用程序状态。
路加·普普利特

对于“端点”,没有高度规范的定义或规范。一切都归结为它所使用的技术。例如,谷歌“什么是端点?” 此页面上的热门文章之一是此页面。我们在这里根据它所使用的上下文来定义它。尽管端点本身不一定是RESTful,但此答案中的所有示例都是RESTful的。请参阅SOAP。
cchamberlain

7

可能我的回答不是一个很好的选择,但这是可行的。

由于通过HTTP与真正的RESTful Web服务进行了更多的合作,我试图使人们避免使用术语终结点,因为它没有明确的定义,而是使用REST语言,即资源和资源位置。

在我看来,端点是TCP术语。它与HTTP混淆,因为部分URL标识了侦听服务器。

因此,资源不是一个较新的术语,我认为,端点始终被盗用,并且我们意识到随着REST作为一种API 风格而逐渐流行起来

编辑

我写了关于这个的博客。

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819



0

考虑一个具有用户,任务及其奖励积分信息的服务器。

  1. 用户和奖励积分是资源
  2. 端点可以涉及多个资源
  3. 可以使用描述或完整或部分URL来描述端点

在此处输入图片说明

来源: API端点与资源


-1

1.资源描述 “资源”是指API返回的信息。

2.端点和方法 端点指示您如何访问资源,而方法指示与资源的允许交互(例如GET,POST或DELETE)。

附加信息: 3.参数 参数是您可以随端点传递的选项(例如,指定响应格式或返回的数量)以影响响应。

4.请求示例 请求示例包括使用端点的示例请求,其中显示了一些已配置的参数。

5.响应示例和模式 响应示例显示了来自请求示例的响应示例;响应模式定义了响应中所有可能的元素。

来源 参考链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.