什么是端点?

258

我一直在阅读 OAuth 相关的内容,它总是提到“端点”。那么究竟什么是端点?

10个回答

526

加油,伙计们 :) 我们可以通过例子来简化它:

/this-is-an-endpoint
/another/endpoint
/some/other/endpoint
/login
/accounts
/cart/items

并且当放置在一个域名下时,它会看起来像:

https://example.com/this-is-an-endpoint
https://example.com/another/endpoint
https://example.com/some/other/endpoint
https://example.com/login
https://example.com/accounts
https://example.com/cart/items

可以是http或https,在示例中我们使用https。

同时,不同的HTTP方法可以有不同的终端点,例如:

GET /item/{id}
PUT /item/{id}

将会有两个不同的端点 - 一个用于检索(即"cRud"缩写中的 "R"),另一个用于更新(即"crUd"中的 "U")。

这就是所有,真的很简单!


48
因提到不同的HTTP方法定义了不同的端点而受到赞同。 - Boyan Kushlev
9
马太福音20:16 KJV——所以,最后的将成为第一。 - sobi3ch
3
很遗憾,Stack Exchange没有将这个答案显示为第一或第二个答案。对我来说,它在列表中排得很后,但它绝对是最好的答案,因为我不知道整个操作和控制器集是否被视为一个端点,还是单个控制器中的单个操作定义了一个端点。这个答案告诉我应该是后者。 - Thorkil Værge
2
@Parth 一般来说,端点是API请求的调用对象,是你向API使用者提供的接口,告诉他们要使用什么。因此,在这个例子中,你的实现处理了两个端点 (因为你向API消费者/用户提供了两种调用方式)。但我刚才写的是“一般”,如果有人坚持认为端点不太一样 (比如在你的例子中,有人会坚持说这是一个端点),那么你可以说:“好的,无论怎么说,这只是个称呼!我很高兴我们能相互理解。” - Tomeg
2
这很简单明了,但我有一个问题。什么是端点? :p 我想说的是,乍一看,端点似乎像是 Web 服务器中的文件之类的东西。这是真的吗?它还可以是其他东西吗?谢谢。 - Satrapes
显示剩余2条评论

98
到目前为止,所有的答案都是正确的,一个端点仅仅是通信通道的一端。在OAuth中,有三个端点需要关注:
  1. 临时凭证请求URI(在OAuth 1.0a社区规范中称为请求令牌URL)。这是您向服务器/服务提供商发送请求以获取未经授权的请求令牌的URI。
  2. 资源所有者授权URI(在OAuth 1.0a社区规范中称为用户授权URL)。这是一个URI,您将用户引导到其中授权从临时凭证请求URI获得的请求令牌。
  3. 令牌请求URI(在OAuth 1.0a社区规范中称为访问令牌URL)。这是一个URI,您向其发送请求以交换已授权的请求令牌,以获取可用于访问受保护资源的访问令牌。

5
为什么不直接称之为“基本URI”,而要称之为“终端点”?“终端点”和“基本URI”之间是否存在根本差异?谢谢。 - Withheld
@Xlsx 这取决于具体实现。一个示例请求可以是 GET "/users?name=admin" 或者 "/users/admin"。你可以选择其中一个或两个都做或者都不做。 - Burak
3
因为 OP 要求“一般的端点”,而不是特定的 OAuth,所以它并没有什么用。现在我感到困惑了。 - dawn
一个端点是一个URI和一个请求方法(GET、POST、PUT、DELETE等)的组合。 - Alan Evangelista

51

它是通信渠道的一端,通常表示为服务器或服务的URL。


那么,URL和端点之间有什么区别?你说“通常情况下这将表示为URL”,那么有时它不是由URL表示的吗?在这些情况下它是由什么表示的?另外,在上面的答案中,他们说端点可以具有相同的URL但HTTP方法不同。显然,这种解释与你的解释不一致。你应该编辑你的答案以澄清这一点。 - nbro

42

端点是用于与API通信的URL模式。


你能提供一个“URL模式”的例子吗?那么什么是API呢?此外,如果一个端点只是一个URL模式,那么为什么这个答案GET /item/{id}PUT /item/{id}是不同的端点呢?因此,一个端点不仅仅是一个“URL模式”,还应该包括HTTP请求方法。 - nbro

14

端点是网络上访问服务、工具或应用程序的“连接点”。在软件世界中,任何正在运行并“监听”连接的软件应用程序都使用端点作为“前门”。当您想要连接到应用程序/服务/工具以交换数据时,您会连接到其端点。


1
将“连接点”作为端点的定义,这更加模糊,如果这个答案的目的是澄清事情,那么这绝不是一个好主意。 - nbro

13

简短回答: "终端是一种抽象,模拟系统可以通过其发送或接收消息的消息通道的末端" (Ibsen, 2010)。


终端与URI(消歧义)

终端不同于URI。 其原因之一是URI 可以指向不同的终端,例如一个用于GET请求,另一个用于POST等。 例如:

@GET /api/agents/{agent_id} //Returns data from the agent identified by *agent_id*
@PUT /api/agents/{agent_id} //Update data of the agent identified by *agent_id*

终端点与资源(消歧义)

终端点并不等同于资源。其中一个原因是因为不同的终端点可以指向相同的资源。举个例子:

@GET /api/agents/{agent_id} @Produces("application/xml") //Returns data in XML format
@GET /api/agents/{agent_id} @Produces("application/json") //Returns data in JSON format

13
< p >Endpoint在OpenID认证术语中,是您发送(POST)认证请求的URL。

引自Google authentication API

要获取Google OpenID端点,请通过向https://www.google.com/accounts/o8/id发送GET或HEAD HTTP请求来执行发现。使用GET时,我们建议将Accept标头设置为"application/xrds+xml"。 Google返回一个包含OpenID提供程序端点URL的XRDS文档。该端点地址被注释为:

<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/server</Type> 
<URI>{Google's login endpoint URI}</URI> 
</Service>

一旦您获得了Google端点,您可以向其发送身份验证请求,指定适当的参数(在链接页面上可用)。您可以通过发送请求到URL或进行HTTP POST请求来连接到端点。


8
起初,“端点”这个术语是用于WCF服务的。尽管后来这个词被用作与API资源同义,但REST建议将这些理解HTTP动词并遵循REST架构的URI(URI[s])称为“资源”。
简而言之,资源或端点是远程托管应用程序的入口点,允许用户通过HTTP协议与其通信。

6

术语的终点是专注于创建请求的URL。 从不同的角度看以下示例:

/api/groups/6/workings/1
/api/v2/groups/5/workings/2
/api/workings/3

他们可以清楚地访问给定API中的相同源。

4
API代表应用程序编程接口。它是您的应用程序通过端点与其他应用程序交互的一种方式。相反,您可以为您的应用程序构建一个API,其他开发人员可以通过HTTP方法(即RESTful)连接/利用该API。表示状态转移(REST):
- GET:从API端点检索数据。 - PUT:通过API更新数据 - 类似于POST但更多关于更新信息。 - POST:将数据发送到API。 - DELETE:从给定API中删除数据。 - PATCH:更新数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接