140

我一直在网上搜索,似乎无法理解回调 URL 的想法。就我而言,我有一些我必须自己定义的回调 URL。一种流行的是“默认回调 URL”。这究竟是什么?你能用简单的英语举个例子吗?

4

7 回答 7

96

完成后,您正在调用的 API 方法将调用回调 URL。所以如果你打电话

POST /api.example.com/foo?callbackURL=http://my.server.com/bar

然后当/foo完成时,它会向http://my.server.com/bar. 该请求的内容和方法会有所不同 - 检查您正在访问的 API 的文档。

于 2014-04-28T17:12:55.423 回答
68

把它想象成一封信。有时您会收到一封信,要求您填写表格,然后将表格放入预先指定地址的信封中,该信封位于存放表格的原始信封中。

填写完表格后,将其放入提供的回邮信封并寄回。

回调 URL 就像那个返回信封。您基本上是在说,“我正在向您发送这些数据;一旦您完成了它,我就会在这个回调 URL 上监听等待您的响应。” 因此 API 将处理您发送的数据,然后查看回调以向您发送响应。

这很有用,因为有时您可能需要很长时间来处理一些数据,并且让调用者等待响应是没有意义的。例如,假设您的 API 允许用户向其发送文档并对其进行病毒扫描。然后你发送一个报告之后。扫描可能需要 3 分钟。用户不能等待 3 分钟。因此,您承认您已收到文件,并在您进行扫描时让呼叫者继续其他业务,然后在完成后使用回调 URL 告诉他们扫描结果。

于 2019-01-31T10:41:02.763 回答
32

如果您使用回调 URL,则 API 可以连接到回调 URL 并发送或接收一些数据。这意味着 API 可以稍后连接到您(在 API 调用之后)。

例子

图表

  1. 使用请求向API发送数据
  2. API使用第二个请求向您发送数据

确切的定义应该在 API 文档中。

于 2019-01-30T20:52:27.027 回答
18

这是一种以异步方式调用 API 的机制。顺序如下

  1. 您的应用调用 url,将回调 url 作为参数传递
  2. api 以 20x http 代码响应(我猜是 201,但请参阅 api 文档)
  3. api 在您的请求上工作一段时间
  4. api 调用您的应用程序以在回调 url 地址处为您提供结果。

因此,您可以调用 api 并告诉您的用户请求正在“处理”或“已获取”,然后在收到来自 api 的响应时更新状态。

希望这是有道理的。-G

于 2019-01-31T12:18:09.160 回答
12

我会为你做的很简单。当一个事务启动时,它会进入处理阶段,直到它到达终端阶段。一旦到达终端阶段,支付网关会将交易状态发布到回调 url,商家通常将其用作向用户显示成功/失败页面的参考。希望这可以帮助?

于 2020-09-09T17:34:16.790 回答
8

另一个用例可能是 OAuth 之类的东西,它可能不会被 API 直接调用,而是在完成与身份提供者的身份验证后由浏览器调用回调 URL。

通常在最终用户输入用户名密码后,身份服务提供商将触发浏览器重定向到您的“回调”url,并带有临时授权码,例如

https://example.com/callback?code=AUTHORIZATION_CODE

然后,您的应用程序可以使用此授权代码向具有更长生命周期的身份提供者请求访问令牌。

于 2019-01-31T05:40:17.940 回答
1

这是回调如何工作的一个常见示例- 大多数在线购买的人可能都经历过。您已经在您最喜欢的网站上进行了购买,然后单击了“提交”按钮。您可能会被发送到处理付款处理的外部服务(如 PayPal),您可以在其中确认您的订单,或者只是等待屏幕上闪烁的“处理中...”字样。交易完成后,您将被引导回原来的购物网站。您看到的页面是回调 URL. 尽管您不知道,但您在处理过程中离开了您最喜欢的在线商店的网站,而您访问的外部网站又将您返回到该网站。除非出现任何故障,否则您应该会看到商店希望您在下单后看到的页面。它可能是感谢页面,或其他包含订单确认信息、后续步骤或主页的页面。它可能会因您订购的内容、订购时间以及订购方式而有所不同。

基本上,回调 URL 会指示外部系统下一步要去哪里。该 URL 上的内容可能是任何内容。它不必是静态 URL。更多的

于 2021-09-10T05:59:44.827 回答