21、网络钩子、OAuth 与外部服务集成全解析

网络钩子、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 请求会在请求生命周期内发生。 </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值