【问题标题】:managing the lifetime of transient webhooks?管理瞬态 webhook 的生命周期?
【发布时间】:2018-11-17 02:23:30
【问题描述】:

假设我有一个 (ReST) API,它提供对资源版本的访问。为了实现更低的延迟,我希望在新资源可用时推送通知。一种方法是使用webhooks。 Webhook 似乎通常被视为长期存在(几天、几周……)或半永久性资源。 如今,我们现在可以升级到 websocket 的连接,以实现相对较短的低延迟会话。

我认为仍然存在中间立场,即客户端创建临时 Webhook 以接收实时通知。 对于半永久性资源,由客户端管理订阅是有意义的。 对于临时 webhook,我们需要服务器管理 web-hook 的生命周期,以防客户端忘记自行删除它们。

我没有在网上看到任何关于这种 webhook 的讨论。 transient webhook 是正确的术语吗?

对于何时自动删除它们有什么最佳做法吗?

如果客户端忘记或无法发送 DELETE,服务器应该何时删除资源? 对原始 POST 的回复是否应该包含生存时间? 如果N次尝试后没有回复,它是否应该定期发布探测心跳并保持钩子? 当服务器决定 /foobar/webhooks/ 可以删除时,它应该变成 410 GONE 还是 404?

似乎这里有很好的标准化空间,可以避免所有潜在的陷阱。

我会接受一个我自己改进的答案(也欢迎 cmets),并链接到一个或多个有据可查的方法或描述一些好的模式。

【问题讨论】:

    标签: webhooks


    【解决方案1】:

    我的猜测是这样的:

    • ReST 资源 /foobar 的 webhook 位于 /foobar/webhooks/
    • 特定的网络挂钩将驻留在 /foobar/webhooks/

    • 客户端向 /foobar/webhooks 发送 HTTP POST 以创建订阅。

    • 客户端可以选择包含它预计需要多长时间的指示。

    • 服务器回复 202 ACCEPT 和 webhook 的位置 /foobar/webhooks/

    • 该 webhook 应提供生存时间指示。

    • 完成后,客户端向 /foobar/webhooks/

    • 发送 HTTP DELETE
    • 如果客户端希望钩子持续更长时间,它应该通过发布到 /foobar/webhooks/ 的消息来告诉服务器,要求它保持 钩子的寿命更长。

    您还需要注意安全性,这在here 进行了很好的讨论。

    另一个资源是: https://realtimeapi.io/hub/rest-hooks/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-11
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多