网络钩子、OAuth 与外部服务集成全解析
1. 网络钩子(Web Hooks)
网络钩子是一种强大且简单的服务间通信方式。当 Integrity 收到来自 Github 的 POST 请求时,它会快速检查端点是否启用以及令牌是否与配置匹配,随后将有效负载信息传递给负责构建的类。
相较于基于轮询的方法,网络钩子在事件驱动交互中效率更高。例如,一天内的一次推送只会触发一次调用,而轮询方法可能会有数百次调用。
提供网络钩子示例
以项目管理工具向日历发送里程碑日期为例,借助 ActiveRecord 的内置回调机制,可以轻松实现网络钩子功能。
最初的实现代码如下:
class Project < ActiveRecord::Base
has_many :milestones
end
class Milestone < ActiveRecord::Base
belongs_to :project
after_save :send_callback
def send_callback
if project.callback_uri
Typhoeus::Request.post(callback_uri,
:body => self.to_json)
end
end
end
不过,该实现存在两个问题:一是项目只有一个潜在的回调 URI;二是在创建里程碑时,网络钩子 POST 请求会在请求生命周期内发生。 </
超级会员免费看
订阅专栏 解锁全文
428

被折叠的 条评论
为什么被折叠?



