【问题标题】:What is a callback URL in relation to an API?什么是与 API 相关的回调 URL?
【发布时间】:2014-06-14 08:26:33
【问题描述】:

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

【问题讨论】:

    标签: terminology callbackurl


    【解决方案1】:

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

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

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

    【讨论】:

    • 回调URL设置不正确会出错吗?
    • @user3768495 我希望它不会,但这将取决于 API 的实现。理论上,它可以在内部使回调成为事务的一部分,如果回调没有返回 2xx 响应,则回滚原始请求所做的任何更改。
    • 我需要在 /api.example.com/foo 上发送对 POST 请求的响应吗?
    • @Abhijeet 你永远需要。如果包含响应是合适的,可以,这样做。
    • 另外,你们认为我们应该将回调 url 放在客户端还是服务器端?
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 另外,你们认为我们应该将回调 url 放在客户端还是服务器端?
    【解决方案3】:

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

    示例

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

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

    【讨论】:

    • 另外,你们认为我们应该将回调 url 放在客户端还是服务器端?
    【解决方案4】:

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

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

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

    希望这是有道理的。 -G

    【讨论】:

    • 另外,你们认为我们应该将回调 url 放在客户端还是服务器端?
    【解决方案5】:

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

    【讨论】:

    • 很好的解释!!另外,你们认为我们应该将回调 url 保存在客户端还是服务器端?
    【解决方案6】:

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

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

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

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

    【讨论】:

      【解决方案7】:

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

      基本上,回调 URL 为外部系统指明下一步要去哪里。该 URL 上的内容可以是任何内容。它不必是静态 URL。 More

      【讨论】:

        猜你喜欢
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 2012-09-15
        • 2015-04-08
        • 2016-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多